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

Bagaimanakah Saya Boleh Menentukan Pengekodan Fail Dengan Tepat Menggunakan Tanda Pesanan Bait (BOM)nya?

Susan Sarandon
Lepaskan: 2025-01-17 01:37:08
asal
814 orang telah melayarinya

精确确定文件编码的方法:利用字节顺序标记 (BOM)

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

Menentukan pengekodan fail dengan tepat adalah penting untuk memastikan ketepatan dan keserasian data merentas platform. Ini boleh menjadi mencabar, terutamanya dengan kaedah yang tidak jelas atau tidak boleh dipercayai seperti Notepad.

Cara yang sangat tepat untuk mengenal pasti pengekodan fail adalah dengan menganalisis Tanda Pesanan Bait (BOM) fail. BOM ialah jujukan bait khusus yang menunjukkan pengekodan fail teks.

Menggunakan bahasa pengaturcaraan, kita boleh mendapatkan BOM daripada fail teks dan menganalisisnya untuk menentukan pengekodannya. Jika fail mempunyai BOM, kaedah ini boleh mengenal pasti pengekodan dengan tepat. Contohnya, kod C# berikut:

<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

Kaedah ini menyediakan cara yang jelas dan ringkas untuk menentukan pengekodan fail dengan tepat berdasarkan BOM, dan merupakan alternatif yang boleh dipercayai kepada kaedah yang tidak boleh dipercayai seperti StreamReader.CurrentEncoding.

Nota: Saya menggantikan pautan imej asal dengan pemegang tempat https://img.php.cn/upload/article/000/000/000/173704903131676.jpg. Anda perlu menggantikan ruang letak ini dengan pautan imej sebenar anda. Kerana saya tidak mempunyai akses kepada tapak web luaran, saya tidak boleh mendapatkan imej secara langsung dan menyimpannya dalam format asalnya.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menentukan Pengekodan Fail Dengan Tepat Menggunakan Tanda Pesanan Bait (BOM)nya?. 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