Saya bertanya-tanya apakah beberapa file teks menyimpan metode encoding mereka di sepanjang konten teks mereka untuk decoding nanti?
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.
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?
Ya, penampil teks hanya bisa menebak. Biasanya menggunakan beberapa heuristik:
- Dalam beberapa pengkodean (terutama dalam UTF-8) tidak semua urutan byte valid. Jadi suatu aplikasi dapat mencoba memecahkan kode file tersebut sebagai UTF-8. Jika berhasil, file tersebut mungkin UTF-8; jika gagal dengan menemukan urutan byte yang tidak valid, itu tidak. Ini adalah cara mis
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 pengkodean 8-bit yang lebih lama, urutan byte apa pun valid. Dalam hal ini, Anda kadang-kadang dapat menebak pengodean dengan melihat histogram byte (frekuensi urutan byte / byte yang berbeda). Internet Explorer dulu melakukan ini untuk "menebak" penyandian halaman. Namun, ini sangat rawan kesalahan, sehingga beberapa program melakukan ini.
Dalam kebanyakan kasus, suatu program harus secara eksplisit diberi tahu apa pengkodean file teks, jika tidak maka tidak akan dapat membacanya dengan benar.