Программа для проверки / поиска символов UTF-8 / Unicode в строке в командной строке?

Я только что понял, что у меня есть файл в моей системе; Он обычно перечисляется:

$ ls -la TΕSТER.txt -rw-r--r-- 1 user user 8 2013-04-11 18:07 TΕSТER.txt $ cat TΕSТER.txt testing 

… однако, он выдает часть программного обеспечения с ошибкой UTF-8 / Unicode. Я был действительно озадачен, так как не мог понять, почему такой файл является проблемой; И, наконец, я вспомнил, чтобы проверить вывод ls с hexdump :

 $ ls TΕSТER.txt TΕSТER.txt $ ls TΕSТER.txt | hexdump -C 00000000 54 ce 95 53 d0 a2 45 52 2e 74 78 74 0a |T..S..ER.txt.| 0000000d 

… Ну, очевидно, что есть несколько байтов между / вместо некоторых букв, поэтому я думаю, что это проблема кодирования Unicode. И я могу попытаться отбросить байты обратно, чтобы увидеть, что напечатано:

 $ echo -e "\x54\xCE\x95\x53\xD0\xA2\x45\x52\x2E\x74\x78\x74" TΕSТER.txt 

… но я до сих пор не могу определить, какие – если есть – символы Unicode.

Итак, есть ли инструмент командной строки, который я могу проверить на строчке на терминале и получить информацию о его символах в Unicode?

Ну, я немного посмотрел в сети и нашел однострочный ugrep в ugrep символа юникода по имени | Commandlinefu.com ; Но это не очень помогает мне здесь.

Затем я увидел кодеки – String encoding and decoding – Python Module of the Week , который имеет множество опций, но не очень сильно связан с именами символов Unicode.

Так что, наконец, я закодировал небольшой инструмент utfinfo.pl , который принимает только вход на stdin:

… который дает мне следующую информацию:

 $ ls TΕSТER.txt | perl utfinfo.pl Got 10 uchars Char: 'T' u: 84 [0x0054] b: 84 [0x54] n: LATIN CAPITAL LETTER T [Basic Latin] Char: 'Ε' u: 917 [0x0395] b: 206,149 [0xCE,0x95] n: GREEK CAPITAL LETTER EPSILON [Greek and Coptic] Char: 'S' u: 83 [0x0053] b: 83 [0x53] n: LATIN CAPITAL LETTER S [Basic Latin] Char: 'Т' u: 1058 [0x0422] b: 208,162 [0xD0,0xA2] n: CYRILLIC CAPITAL LETTER TE [Cyrillic] Char: 'E' u: 69 [0x0045] b: 69 [0x45] n: LATIN CAPITAL LETTER E [Basic Latin] Char: 'R' u: 82 [0x0052] b: 82 [0x52] n: LATIN CAPITAL LETTER R [Basic Latin] Char: '.' u: 46 [0x002E] b: 46 [0x2E] n: FULL STOP [Basic Latin] Char: 't' u: 116 [0x0074] b: 116 [0x74] n: LATIN SMALL LETTER T [Basic Latin] Char: 'x' u: 120 [0x0078] b: 120 [0x78] n: LATIN SMALL LETTER X [Basic Latin] Char: 't' u: 116 [0x0074] b: 116 [0x74] n: LATIN SMALL LETTER T [Basic Latin] 

… который затем определяет, какие символы не являются «равными» ASCII.

Надеюсь, это поможет кому-то,
Ура!

Попробуйте использовать uniname, часть пакета uniutils в системах Debian и Ubuntu. Вот пример uniname в действии:

 echo -e "\x54\xCE\x95\x53\xD0\xA2\x45\x52\x2E\x74\x78\x74" | uniname No LINES variable in environment so unable to determine lines per page. Using default of 24. character byte UTF-32 encoded as glyph name 0 0 000054 54 T LATIN CAPITAL LETTER T 1 1 000395 CE 95 Ε GREEK CAPITAL LETTER EPSILON 2 3 000053 53 S LATIN CAPITAL LETTER S 3 4 000422 D0 A2 Т CYRILLIC CAPITAL LETTER TE 4 6 000045 45 E LATIN CAPITAL LETTER E 5 7 000052 52 R LATIN CAPITAL LETTER R 6 8 00002E 2E . FULL STOP 7 9 000074 74 t LATIN SMALL LETTER T 8 10 000078 78 x LATIN SMALL LETTER X 9 11 000074 74 t LATIN SMALL LETTER T 10 12 00000A 0A LINE FEED (LF) 
  • В чем разница между кодировками utf8mb4 и utf8 в mysql?
  • Сериализация объекта как XML UTF-8 в .NET.
  • Создать файл в UTF-8 с помощью FileWriter (Java)?
  • Как проводить поиск Accent Sensitive в MySql
  • Кодировка символов JSON - поддерживается UTF-8 браузерами или мне нужно использовать числовые escape-последовательности?
  • Проблемы с OS X Terminal UTF-8
  • Как конвертировать UTF-8 в US-Ascii в Java
  • Кодирование FPDF utf-8 (HOW-TO)
  • Если исходный код сохраняется в формате UTF-8
  • В чем разница между UTF-8 и ISO-8859-1?
  • Кодировка Spring MVC UTF-8
  • Interesting Posts

    Как заставить Excel открывать файлы CSV с данными, расположенными в столбцах

    В клон StackOverflow, какая связь должна иметь таблица комментариев в вопросах и ответах?

    Включить ReadyBoost на второй внутренний жесткий диск?

    О развитии векторов

    h: сообщения не отображаются при нажатии кнопки p: commandButton

    Как удалить или отключить кнопку «Простота доступа» на экране входа в Windows 7

    Каково использование DesiredCapabilities в Selenium WebDriver?

    Программное обеспечение для переименования файлов с японскими или корейскими именами символов / букв на их латинизированные (римские / латинские буквы) эквиваленты

    Как создать полностью настраиваемый диалог / всплывающее окно в Android (изменить цвет наложения и расположение диалогового windows)

    С массивами, почему это так, == 5 ?

    Совместное использование ПК на Android-телефоне через Bluetooth

    Почему последовательная передача данных происходит быстрее, чем параллельно?

    Приложение Swing -> Перетащите на рабочий стол / папку

    Где установить значение параметра по умолчанию на C ++?

    Пожалуйста, порекомендуйте инструмент для рисования структур / классов и указателей

    Давайте будем гением компьютера.