Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Menentukan Pengekodan Fail Dengan Amanah Menggunakan Tanda Pesanan Bait (BOM)?

Bagaimana untuk Menentukan Pengekodan Fail Dengan Amanah Menggunakan Tanda Pesanan Bait (BOM)?

Linda Hamilton
Lepaskan: 2025-01-17 01:32:09
asal
424 orang telah melayarinya

How to Reliably Determine a File's Encoding Using its Byte Order Mark (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:

  • UTF-8: EF BB BF
  • UTF-16LE: FF FE
  • UTF-16BE: FF FE
  • UTF-32LE: FF FE 00 00
  • UTF-32BE: 00 00 FE FF
  • ASCII: Tiada BOM

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan