Saya mencoba mengidentifikasi karakter aneh yang saya temukan dalam file yang saya kerjakan:
$ cat file
�
$ od file
0000000 005353
0000002
$ od -c file
0000000 353 \n
0000002
$ od -x file
0000000 0aeb
0000002
File ini menggunakan penyandian ISO-8859 dan tidak dapat dikonversi ke 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
Pertanyaan utama saya adalah bagaimana saya bisa menafsirkan output di od
sini? Saya mencoba menggunakan halaman ini yang memungkinkan saya menerjemahkan antara representasi karakter yang berbeda, tetapi ia memberi tahu saya bahwa 005353
sebagai "titik kode Hex" adalah 卓
yang tampaknya tidak benar dan 0aeb
sebagai "titik kode Hex" adalah ૫
yang, sekali lagi, tampaknya salah .
Jadi, bagaimana saya bisa menggunakan salah satu dari tiga opsi ( 355
, 005353
atau 0aeb
) untuk mengetahui karakter apa yang seharusnya mereka wakili?
Dan ya, saya memang mencoba dengan alat Unicode tetapi tampaknya juga bukan karakter UTF yang valid:
$ 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
jika saya memahami deskripsi karakter Unicode U + FFFD, itu sama sekali bukan karakter asli tetapi pengganti untuk karakter yang rusak. Yang masuk akal karena file tersebut sebenarnya tidak disandikan UTF-8.
ë
adalah apa yang saya lihat ketika data digunakan pada program lain! Tapi bagaimana saya bisa tahu ini? Bukankah itu di suatu tempat dalam data yang saya berikan? Bagaimana caramu menemukannya? Oh saya telah mencoba iconv
dengan -f ISO-8859
tetapi mengeluh tentang conversion from
ISO-8859' tidak supported`.
eb
dan mengabaikan 0x
indikator hex atau apa pun itu. Ketidaktahuan saya tentang hal semacam ini sangat mendalam. Bisakah Anda mengirim jawaban yang menjelaskan bahwa @StephenKitt?
iconv
akan berhasil; dan / atau Anda bisa mencarinya misalnya di Wikipedia. Untuk pengkodean yang sangat spesifik ini, fileformat.info/info/unicode/char/00eb/index.htm juga berfungsi (Unicode setara dengan ISO-8859-1 dalam kisaran 128-255, meskipun tentu saja tidak ada pengkodean UTF yang kompatibel dengannya) ).
iconv
mengeluh karena Anda tidak menentukan rangkaian karakter sumber, sehingga menggunakan default Anda yang mungkin UTF-8.)