Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Menentukan Pengekodan Fail Dengan Amanah Menggunakan Tanda Pesanan Bait (BOM)?
Kenal pasti pengekodan fail dengan tepat: kaedah praktikal
Pengenalan pengekodan fail yang betul adalah penting untuk pemprosesan teks. Walau bagaimanapun, atribut StreamReader.CurrentEncoding
selalunya tidak memberikan hasil yang tepat. Untuk menyelesaikan masalah ini, kaedah yang lebih dipercayai ialah menganalisis Tanda Pesanan Bait (BOM) fail.
Peranan BOM
BOM ialah jujukan bait yang menunjukkan endian dan pengekodan fail teks. BOM biasa termasuk:
Tentukan pengekodan fail berdasarkan BOM
Kod C# berikut menyediakan pelaksanaan terperinci:
<code class="language-csharp">public static Encoding GetEncoding(string filename) { // 读取 BOM byte[] bom = new byte[4]; using (var file = new FileStream(filename, FileMode.Open, FileAccess.Read)) { file.Read(bom, 0, 4); } // 分析 BOM if (bom[0] == 0x2b && bom[1] == 0x2f && bom[2] == 0x76) return Encoding.UTF7; if (bom[0] == 0xef && bom[1] == 0xbb && bom[2] == 0xbf) return Encoding.UTF8; if (bom[0] == 0xff && bom[1] == 0xfe && bom[2] == 0 && bom[3] == 0) return Encoding.UTF32; //UTF-32LE if (bom[0] == 0xff && bom[1] == 0xfe) return Encoding.Unicode; //UTF-16LE if (bom[0] == 0xfe && bom[1] == 0xff) return Encoding.BigEndianUnicode; //UTF-16BE if (bom[0] == 0 && bom[1] == 0 && bom[2] == 0xfe && bom[3] == 0xff) return new UTF32Encoding(true, true); //UTF-32BE // 如果未检测到 BOM,则回退到 ASCII return Encoding.ASCII; }</code>
Menggunakan kaedah ini, anda boleh mengenal pasti pengekodan mana-mana fail teks dengan tepat, memastikan tafsiran data dan pemprosesan teks yang betul.
Atas ialah kandungan terperinci Bagaimana untuk Menentukan Pengekodan Fail Dengan Amanah Menggunakan Tanda Pesanan Bait (BOM)?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!