- Saya bertanya-tanya apakah beberapa file teks menyimpan metode encoding mereka di sepanjang konten teks mereka untuk decoding nanti?
- Atau apakah tugas penampil teks untuk menebak metode pengkodean untuk file teks yang diberikan, dan menebak itu mungkin tidak selalu benar? Jika ya, bagaimana penampil teks dapat menebaknya?
19
Jawaban:
Jawaban Mark Szymanski benar - tidak ada informasi pengkodean eksplisit dalam file teks biasa - itulah definisi "file teks biasa", "polos" merujuk pada kenyataan bahwa tidak ada meta-data dalam file.
Namun, beberapa aplikasi akan menempatkan tanda byte-order (BOM) dalam file teks yang dikodekan sebagai UTF-16 atau UTF-32 / UCS-4. BOM tidak benar-benar dimaksudkan untuk menunjukkan pengkodean (itu menunjukkan urutan byte, seperti namanya), tetapi banyak aplikasi akan menggunakan keberadaan BOM untuk mengenali UTF-16 / UTF-32, sehingga berfungsi sebagai indikator pengkodean.
Ya, penampil teks hanya bisa menebak. Biasanya menggunakan beberapa heuristik:
vim
berfungsi secara default: Ini pertama-tama akan mencoba menggunakan UTF-8 saat membaca file; jika itu gagal, ia kembali ke ISO-8859-1.Dalam kebanyakan kasus, suatu program harus secara eksplisit diberi tahu apa pengkodean file teks, jika tidak maka tidak akan dapat membacanya dengan benar.
sumber
file -bi
kerjanya jika BOM tidak digunakan?file
memiliki berbagai heuristik untuk menentukan jenis file dan pengodean. Sebagian besar, mencari string string atau byte byte dalam file. Jika Anda menginginkan informasi yang lebih spesifik, Anda mungkin harus membaca sumbernya. Atau cukup ajukan pertanyaan terpisah :-).file
tidak dapat diandalkan mendeteksi sebagian besar penyandian teks (karena itu sangat sulit). Halaman manual memiliki beberapa informasi tentang deteksi kumpulan karakter -file
kebanyakan hanya mengenali ASCII, UTF-8/16, EBCDIC, dan ISO-8859-x. Misalnya, file yang disandikan dalam KOI8-R dilaporkan sebagai "ISO-8859-1".File teks biasa tidak menyimpan informasi apa pun tentang penyandiannya. Penampil menentukannya berdasarkan pengkodean karakter yang telah Anda tetapkan untuk itu. Itu tidak dapat menentukan dengan sendirinya, karena itu semua sama dengan komputer.
sumber
less
Dangrep
di Unix / Linux melakukan ini).