Sto cercando di identificare uno strano personaggio che ho trovato in un file con cui sto lavorando:
$ cat file
�
$ od file
0000000 005353
0000002
$ od -c file
0000000 353 \n
0000002
$ od -x file
0000000 0aeb
0000002
Il file utilizza la codifica ISO-8859 e non può essere convertito in 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
La mia domanda principale è come posso interpretare l'output di od
qui? Sto cercando di usare questa pagina che mi permette di tradurre tra diverse rappresentazioni di caratteri, ma mi dice che 005353
come un "punto di codice esadecimale" è 卓
che non sembra giusto e 0aeb
come un "punto di codice esadecimale" ૫
che, ancora, sembra sbagliato .
Così, come posso utilizzare una qualsiasi delle tre opzioni ( 355
, 005353
o 0aeb
) per scoprire quale personaggio che dovrebbero rappresentare?
E sì, ho provato con gli strumenti Unicode ma non sembra nemmeno essere un carattere UTF valido:
$ 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 capisco la descrizione del personaggio Unicode U + FFFD, non è affatto un personaggio reale ma un segnaposto per un personaggio corrotto. Il che ha senso dato che il file non è in realtà codificato UTF-8.
ë
è quello che vedo quando i dati vengono utilizzati su un altro programma! Ma come posso saperlo? Non è da qualche parte nei dati che fornisco? Come l'hai trovato? Oh Avevo provato iconv
con -f ISO-8859
ma lamentato conversion from
ISO-8859' non è che beneficiano del sostegno.
eb
e ignorare l' 0x
indicatore esadecimale o qualunque cosa sia. La mia ignoranza di questo genere di cose è profonda. Potresti pubblicare una risposta spiegando che @StephenKitt?
iconv
sarebbe riuscito; e / o avresti potuto cercarlo, ad esempio su Wikipedia. Per questa codifica molto specifica, fileformat.info/info/unicode/char/00eb/index.htm funziona anche (Unicode è equivalente a ISO-8859-1 nell'intervallo 128-255, anche se ovviamente nessuna codifica UTF è compatibile con essa ).
iconv
lamenta perché non hai specificato il set di caratteri di origine, quindi utilizza il tuo valore predefinito che è probabilmente UTF-8.)