Próbuję zidentyfikować dziwną postać, którą znalazłem w pliku, z którym pracuję:
$ cat file
�
$ od file
0000000 005353
0000002
$ od -c file
0000000 353 \n
0000002
$ od -x file
0000000 0aeb
0000002
Plik korzysta z kodowania ISO-8859 i nie można go przekonwertować na format 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
Moje główne pytanie brzmi: jak mogę zinterpretować wyniki odtutaj? Próbuję użyć tej strony, która pozwala mi tłumaczyć różne reprezentacje znaków, ale mówi mi, że 005353jako „punkt kodu Hex” wydaje się być niewłaściwy, 卓a 0aebjako „punkt kodu Hex”, ૫który ponownie wydaje się błędny .
Tak więc, w jaki sposób można zastosować jedną z trzech opcji ( 355, 005353lub 0aeb), aby dowiedzieć się, jaki charakter mają oni reprezentują?
I tak, próbowałem z narzędziami Unicode, ale nie wydaje się to być poprawnym znakiem 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
jeśli rozumiem opis znaku Unicode U + FFFD, to w ogóle nie jest to prawdziwy znak, ale symbol zastępczy dla uszkodzonego znaku. Ma to sens, ponieważ plik nie jest tak naprawdę zakodowany w UTF-8.
ëwłaśnie to widzę, gdy dane są wykorzystywane w innym programie! Ale skąd mam to wiedzieć? Czy nie jest to gdzieś w danych, które podaję? Jak to znalazłeś? Aha próbowałem iconvze -f ISO-8859jednak skarżył conversion from ISO-8859' nie jest wspierani.
ebi zignorować 0xwskaźnik heksadecymalny lub cokolwiek to jest. Moja nieznajomość tego rodzaju rzeczy jest głęboka. Czy możesz opublikować odpowiedź wyjaśniającą, że @StephenKitt?
iconvby się udało; i / lub mogłeś to sprawdzić np. na Wikipedii. W przypadku tego bardzo specyficznego kodowania działa również fileformat.info/info/unicode/char/00eb/index.htm (Unicode odpowiada ISO-8859-1 w zakresie 128-255, choć oczywiście żadne kodowanie UTF nie jest z nim zgodne ).
iconvnarzeka, ponieważ nie określiłeś źródłowego zestawu znaków, więc używa twojego domyślnego, którym jest prawdopodobnie UTF-8.)