Pada sistem berkas (Windows 7) saya punya beberapa file teks (Ini adalah SQL script file, jika yang penting).
Ketika dibuka dengan Notepad++, di "Encoding" menu beberapa dari mereka dilaporkan telah encoding "UCS-2 Little Endian" dan "UTF-8 tanpa BOM".
Apa perbedaan di sini? Mereka semua tampak sempurna berlaku script. Bagaimana aku bisa tahu apa pengkodean file tanpa Notepad++?
File yang umumnya menunjukkan mereka encoding dengan file header. Ada banyak contoh di sini. Namun, bahkan membaca header anda tidak pernah bisa yakin apa encoding file benar-benar menggunakan.
Sebagai contoh, sebuah file dengan tiga byte pertama 0xEF,0xBB,0xBF
adalah mungkin UTF-8 encoded file. Namun, hal itu mungkin menjadi ISO-8859-1 file yang terjadi untuk memulai dengan karakter
. Atau mungkin jenis file yang berbeda sepenuhnya.
Notepad++ melakukan yang terbaik untuk menebak apa encoding file menggunakan, dan sebagian besar waktu itu mendapatkannya benar. Kadang-kadang itu tidak salah meskipun - itu's mengapa itu 'Encoding' menu yang ada, sehingga anda dapat mengganti nya kira yang terbaik.
Untuk dua pengkodean yang anda sebutkan:
0xFF,0xFE
sebagai yang pertama 2 byte. Dari apa yang saya dapat katakan, Notepad++ menggambarkan mereka sebagai "UCS-2" sejak itu doesn't dukungan aspek tertentu dari UTF-16. Anda tidak bisa. Jika anda bisa melakukan itu, tidak akan ada begitu banyak situs web atau file teks dengan "omong kosong acak" di luar sana. Yang's mengapa pengkodean biasanya dikirim bersama dengan muatan sebagai meta data.
Dalam kasus itu's tidak, semua dapat anda lakukan adalah "smart kira" tapi hasilnya sering ambigu karena urutan byte yang sama mungkin akan berlaku di beberapa pengkodean.