我怎么弄清楚这个角色是什么?

时间:2009-08-11 15:48:12

标签: ruby character-encoding

更新:显然这些是控制字符,而不是Unicode字符。

我正在尝试解析一个XML文件,该文件中有一个奇怪的字符使其无效并导致我的工具(Firefox,Nokogiri)抱怨。

以下是Firefox中的角色,以及将其复制并粘贴到Textmate时的样子(显然我在OS X上)。

crazy characters http://img.skitch.com/20090811-ghu43k5u9nhpcjmh443dpq76jp.preview.jpg

我真的很想知道这些字符是什么(例如hex / dec代码),而不仅仅是神秘的图标和小灰色钻石,但我不知道如何解决这个问题。

10 个答案:

答案 0 :(得分:4)

您的屏幕截图很小,但Firefox示例中是否包含一个包含4个十六进制字符的字形?如果是这样,那就是Unicode字符的代码编号。您还可以在Unicode code charts上搜索该钻石字形,或者只是将钻石复制到Google搜索中,并且字符名称应该靠近顶部。

但真正的问题是如何在程序中处理Unicode输入。如果您正在处理XML,则需要正确执行此操作。 Nokogiri是一个Ruby库?听到它不能自动处理Unicode,我感到很惊讶。

答案 1 :(得分:4)

我会将Firefox中的页面保存到文件中,并将其传递给hexdump -C。在ASCII部分中查找围绕它的HTML片段,然后查找十六进制字节。最有可能的是,这些是UTF-8,因此需要一个多字节代码。

答案 2 :(得分:2)

您正在寻找的搜索字词是U+2603U2603,显然会替换您可怕模糊的“未知字形”框中的数字。前几个结果将是关于Unicode字符。

答案 3 :(得分:1)

将其复制到emacs并启动hexl-mode。

答案 4 :(得分:0)

只需使用像xvi32这样的hexeditor打开文件。

答案 5 :(得分:0)

打开文件hexeditor并提取字符的十六进制表示。然后在http://unicode.org上查找代码,找出角色的名称。

答案 6 :(得分:0)

hexdump -c 从终端命令行将显示字符代码。

答案 7 :(得分:0)

保存文件,然后从终端使用:

od(八进制转储)

答案 8 :(得分:0)

如果您正在使用Vim,请将光标移到字符上并输入ga以在状态区域中显示十六进制

答案 9 :(得分:0)

你可以下载类String的Ruby hexdump扩展,并直接从Ruby打印出一个hexdump:

require 'hexdump'

#... whatever you do in your program

puts your_string.hexdump

输出看起来像是从shell中的hexdump -C得到的

请参阅:

Ruby Hexdump method for Class String