Estoy tratando de identificar un personaje extraño que he encontrado en un archivo con el que estoy trabajando:
$ cat file
�
$ od file
0000000 005353
0000002
$ od -c file
0000000 353 \n
0000002
$ od -x file
0000000 0aeb
0000002
El archivo está usando la codificación ISO-8859 y no se puede convertir a 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
Mi pregunta principal es ¿cómo puedo interpretar la salida de od
aquí? Estoy tratando de usar esta página que me permite traducir entre diferentes representaciones de caracteres, pero me dice que 005353
un "punto de código hexadecimal" es 卓
lo que no parece correcto y 0aeb
que un "punto de código hexadecimal" es lo ૫
que, nuevamente, parece incorrecto .
Así que, ¿cómo puedo usar cualquiera de las tres opciones ( 355
, 005353
o 0aeb
) para averiguar qué personaje que se supone que representan?
Y sí, probé con las herramientas Unicode pero tampoco parece ser un carácter 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
Si entiendo la descripción del personaje Unicode U + FFFD, no es un personaje real, sino un marcador de posición para un personaje corrupto. Lo cual tiene sentido ya que el archivo no está realmente codificado en UTF-8.
ë
es lo que veo cuando los datos se usan en otro programa! ¿Pero cómo puedo saber esto? ¿No está en algún lugar de los datos que proporciono? ¿Cómo lo encontraste? Oh, lo había intentado iconv
con -f ISO-8859
pero se quejó de conversion from
la norma ISO-8859' no se supported`.
eb
e ignorar el 0x
indicador hexadecimal o lo que sea. Mi ignorancia de este tipo de cosas es profunda. ¿Podría publicar una respuesta explicando que @StephenKitt?
iconv
habría tenido éxito; y / o podría haberlo buscado, por ejemplo, en Wikipedia. Para esta codificación muy específica, fileformat.info/info/unicode/char/00eb/index.htm también funciona (Unicode es equivalente a ISO-8859-1 en el rango 128-255, aunque, por supuesto, ninguna codificación UTF es compatible con él )
iconv
queja porque no especificó el conjunto de caracteres de origen, por lo que utiliza su valor predeterminado que probablemente sea UTF-8.)