Я пытаюсь определить странный символ, который я нашел в файле, с которым я работаю:
$ 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 «не поддерживается».
eb
и игнорировать 0x
шестнадцатеричный индикатор или что-то еще. Мое незнание такого рода вещей глубоко. Не могли бы вы опубликовать ответ, объясняющий, что @StephenKitt?
iconv
бы ты преуспел; и / или вы могли бы посмотреть это, например, в Википедии. Для этой очень специфической кодировки также работает fileformat.info/info/unicode/char/00eb/index.htm (Unicode эквивалентен ISO-8859-1 в диапазоне 128-255, хотя, конечно, ни одна UTF-кодировка не совместима с ним ).
iconv
жалуется, потому что вы не указали исходный набор символов, поэтому он использует ваше значение по умолчанию, которое, вероятно, UTF-8.)