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

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

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

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

疯狂的人物http://sofzh.miximages.com/ruby/skitch

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

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

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

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

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

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

只需使用xvi32之类的hexeditor打开文件即可。

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

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

如果您正在使用Vim,则将光标移到字符上并键入ga以在状态区域中显示hex

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

 require 'hexdump' #... whatever you do in your program puts your_string.hexdump 

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

看到:

Class String的Ruby Hexdump方法

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

od (八进制转储)