Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Mengenalpasti Pengekodan Fail Dengan Tepat Menggunakan Markah Pesanan Bait (BOM)?
Gunakan Byte Order Mark (BOM) untuk mengenal pasti pengekodan fail dengan tepat
KaedahStreamReader.CurrentEncoding
tidak selalu memberikan maklumat pengekodan fail dengan pasti dan menganalisis tanda pesanan bait (BOM) fail ialah cara yang tepat dan cekap untuk mengenal pasti pengekodan. Urutan BOM (jika ada) boleh menunjukkan format pengekodan.
Coretan kod berikut memperkenalkan kaedah yang dipanggil GetEncoding
yang menentukan pengekodan fail teks berdasarkan BOM fail. Jika pengesanan BOM gagal, lalai kepada ASCII:
<code class="language-csharp">public static Encoding GetEncoding(string filename) { // 读取 BOM var 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 fail dengan tepat, membolehkan tafsiran dan manipulasi teks yang tepat.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengenalpasti Pengekodan Fail Dengan Tepat Menggunakan Markah Pesanan Bait (BOM)?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!