Я намагаюся визначити дивного персонажа, який я знайшов у файлі, з яким працюю:
$ cat file
�
$ od file
0000000 005353
0000002
$ od -c file
0000000 353 \n
0000002
$ od -x file
0000000 0aeb
0000002
Файл використовує кодування ISO-8859 і не може бути перетворений в UTF-8:
$ iconv -f ISO-8859 -t UTF-8 file
iconv: conversion from `ISO-8859' is not supported
Try `iconv --help' or `iconv --usage' for more information.
$ iconv -t UTF-8 file
iconv: illegal input sequence at position 0
$ file file
file: ISO-8859 text
Моє головне питання - як я можу інтерпретувати вихідні дані od
тут? Я намагаюся використовувати цю сторінку, яка дозволяє мені перекладати між різними представленнями символів, але це говорить мені, що 005353
"шістнадцятковий код" - це те, 卓
що не здається правильним, а 0aeb
"шістнадцятковий код" - ૫
це, знову ж таки, здається неправильним .
Отже, як я можу використовувати будь-якого з трьох варіантів ( 355
, 005353
або 0aeb
) , щоб з'ясувати , який характер вони повинні представляти?
І так, я намагався з інструментами Unicode, але він, схоже, не є дійсним символом UTF:
$ uniprops $(cat file)
U+FFFD ‹�› \N{REPLACEMENT CHARACTER}
\pS \p{So}
All Any Assigned Common Zyyy So S Gr_Base Grapheme_Base Graph X_POSIX_Graph
GrBase Other_Symbol Print X_POSIX_Print Symbol Specials Unicode
якщо я розумію опис символу Unicode U + FFFD, це зовсім не справжній символ, а заповнювач пошкодженого символу. Що має сенс, оскільки файл насправді не кодується UTF-8.
ë
це те, що я бачу, коли дані використовуються в іншій програмі! Але як я можу це знати? Чи не десь у даних, які я надаю? Як ви його знайшли? Про , я спробував iconv
з , -f ISO-8859
але вона скаржилася conversion from
ISO-8859 "не supported`.
eb
і ігнорувати 0x
шестнадцятковий індикатор або все, що це є. Моє незнання подібного роду глибоке. Чи можете ви опублікувати відповідь, пояснюючи це @StephenKitt?
iconv
би досяг успіху; та / або ви могли це шукати, наприклад, у Вікіпедії. Для цього дуже специфічного кодування також працює fileformat.info/info/unicode/char/00eb/index.htm (Unicode еквівалентний ISO-8859-1 в діапазоні 128-255, хоча, звичайно, жодне кодування UTF не сумісне з ним ).
iconv
скаржиться, що ви не вказали вихідний набір символів, тому він використовує за замовчуванням, що, ймовірно, UTF-8.)