Я пытаюсь определить странный символ, который я нашел в файле, с которым я работаю:
$ 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.)