Estou tentando identificar um caractere estranho que encontrei em um arquivo com o qual estou trabalhando:
$ cat file
�
$ od file
0000000 005353
0000002
$ od -c file
0000000 353 \n
0000002
$ od -x file
0000000 0aeb
0000002
O arquivo está usando a codificação ISO-8859 e não pode ser convertido em 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
Minha principal pergunta é como posso interpretar a saída od
daqui? Estou tentando usar esta página que me permite traduzir entre diferentes representações de caracteres, mas ele me diz que 005353
como um "ponto de código hexadecimal" é o 卓
que não parece certo e 0aeb
como um "ponto de código hexadecimal" é o ૫
que, novamente, parece errado .
Então, como posso usar qualquer uma das três opções ( 355
, 005353
ou 0aeb
) para descobrir qual personagem eles devem representar?
E sim, tentei com ferramentas Unicode, mas também não parece ser um caractere UTF válido:
$ 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
se eu entendo a descrição do caractere Unicode U + FFFD, ele não é um caractere real, mas um espaço reservado para um caractere corrompido. O que faz sentido, já que o arquivo não é realmente codificado em UTF-8.
ë
é o que vejo quando os dados são usados em outro programa! Mas como eu sei disso? Não está em algum lugar nos dados que forneço? Como você encontrou isso? Oh eu tinha tentado iconv
com -f ISO-8859
mas reclamou conversion from
ISO-8859' não é supported`.
eb
e ignorar o 0x
indicador hexadecimal ou o que quer que seja. Minha ignorância desse tipo de coisa é profunda. Você poderia postar uma resposta explicando que @StephenKitt?
iconv
teria conseguido; e / ou você poderia ter procurado, por exemplo, na Wikipedia. Para essa codificação muito específica, fileformat.info/info/unicode/char/00eb/index.htm também funciona (o Unicode é equivalente à ISO-8859-1 no intervalo 128-255, embora, obviamente, nenhuma codificação UTF seja compatível com ela. )
iconv
Reclama porque você não especificar o conjunto de caracteres de origem, para que ele usa o padrão que provavelmente é UTF-8.)