2009-08-11 6 views
1

Обновление: По-видимому, это управляющие символы, а не символы Юникода.Как мне понять, что это за символ?

Я пытаюсь разобрать XML-файл с нечетным символом в нем, что делает его недействительным и заставляет мои инструменты (Firefox, Nokogiri) жаловаться.

Вот как выглядит персонаж в Firefox и как он выглядит, когда я копирую и вставляю его в Textmate (очевидно, я на OS X).

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

Вместо того, чтобы просто загадочные значки и маленькие серые алмазы Я бы очень хотел знать, что эти символы (например, коды шестигранной/разл), но я не уверен, как это выяснить.

+0

Я думаю (но может быть неправильно), что Firefox сообщает мне, какой он персонаж. Ты уверен, что он нигде не появляется? –

+0

Каковы цифры от вашего нечитабельно размытого глифа? – joeforker

ответ

4

Я бы сохранил страницу в Firefox в файл и передал ее hexdump -C. Найдите фрагмент HTML вокруг него в части ASCII, затем найдите шестнадцатеричные байты. Скорее всего, это UTF-8, поэтому ожидайте многобайтовый код.

4

Ваш скриншот крошечный, но разве образец Firefox содержит глиф с четырьмя шестнадцатеричными символами? Если это так, это кодовый номер символа Юникода. Вы также можете охотиться за этим алмазным глифом на Unicode code charts или просто скопировать алмаз в поиск Google, и имя персонажа должно появиться около вершины.

Но реальный вопрос заключается в том, как обрабатывать ввод Unicode в вашей программе. Это нужно сделать правильно, если вы обрабатываете XML. Nokogiri - библиотека Ruby? Я удивлен, услышав, что он не обрабатывает Unicode автоматически.

+0

Я пробовал вставлять их в Google (извините, я должен был отметить это в исходном вопросе), и это получилось пустым. Я нашел несколько из них сейчас, и все они появляются в виде серых бриллиантов в Textmate; Я не думаю, что они на самом деле являются кодом для алмазного символа. –

0

Просто откройте файл с помощью гекседера, такого как xvi32.

0

Откройте файл hexeditor и извлеките шестнадцатеричное представление символа. Затем найдите код на http://unicode.org, чтобы узнать имя персонажа.

0

hexdump -c из командной строки терминала покажет вам код символа.

0

Сохранить файл, а затем из терминала использования:

od (восьмеричный дамп)

1

Скопируйте его в Emacs и начать Hexl-режим.

0

Если вы используете Vim, а затем переместить курсор на характер и тип га, чтобы показать шестигранник в области состояния

2

Термин поиска вы ищете U+2603 или U2603, очевидно, подставляя числа из ваш печально размытый «неизвестный глиф». Первые несколько результатов будут касаться этого символа Unicode.

+0

+1 смешно. [Rails trivia] (http://stackoverflow.com/questions/3222013/what-is-the-snowman-param-in-rails-3-forms-for) –

0

вы можете загрузить расширение HexDump Ruby, для класса String, и распечатать шестнадцатеричный Руби непосредственно:

require 'hexdump' 

#... whatever you do in your program 

puts your_string.hexdump 

выхода выглядит как то, что вы получаете от hexdump -C в оболочке

См:

http://www.unixgods.org/~tilo/Ruby/hexdump.html

Смежные вопросы