Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Mengenalpasti Pengekodan Fail Dengan Tepat Menggunakan Markah Pesanan Bait (BOM)?

Bagaimanakah Saya Boleh Mengenalpasti Pengekodan Fail Dengan Tepat Menggunakan Markah Pesanan Bait (BOM)?

DDD
Lepaskan: 2025-01-17 01:47:09
asal
1001 orang telah melayarinya

How Can I Precisely Identify a File's Encoding Using Byte Order Marks (BOMs)?

Gunakan Byte Order Mark (BOM) untuk mengenal pasti pengekodan fail dengan tepat

Kaedah

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

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!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan