Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Menentukan Pengekodan Fail dengan Tepat dalam C#?

Bagaimanakah Saya Boleh Menentukan Pengekodan Fail dengan Tepat dalam C#?

Linda Hamilton
Lepaskan: 2025-01-17 01:41:08
asal
207 orang telah melayarinya

How Can I Accurately Determine a File's Encoding in C#?

Mengenal pasti Pengekodan Fail dengan Tepat dalam C#

Menentukan pengekodan fail dengan tepat adalah penting untuk pemprosesan data yang betul. Walaupun StreamReader.CurrentEncoding kadangkala gagal, kaedah yang lebih mantap melibatkan analisis Byte Order Mark (BOM). Pendekatan ini, sama seperti yang digunakan dalam Notepad , memberikan ketepatan yang lebih tinggi.

Memanfaatkan Tanda Pesanan Byte (BOM)

Kehadiran BOM dengan ketara membantu pengekodan pengenalan. Nilai BOM berikut sepadan dengan pengekodan khusus:

  • UTF-7: 0x2b, 0x2f, 0x76
  • UTF-8: 0xef, 0xbb, 0xbf
  • UTF-32LE: 0xff, 0xfe, 0x00, 0x00
  • UTF-16LE: 0xff, 0xfe
  • UTF-16BE: 0xfe, 0xff
  • UTF-32BE: 0x00, 0x00, 0xfe, 0xff

Jika tiada BOM dikesan, kod lalai kepada ASCII untuk mengelakkan ralat.

Pelaksanaan Kod C# untuk Analisis BOM

Kod C# berikut menunjukkan pengesanan pengekodan berasaskan BOM ini:

<code class="language-csharp">public static Encoding GetEncoding(string filename)
{
    byte[] bom = new byte[4];
    using (FileStream file = new FileStream(filename, FileMode.Open, FileAccess.Read))
    {
        file.Read(bom, 0, 4);
    }

    // BOM analysis logic (see complete implementation below)

    return Encoding.ASCII; // Default to ASCII if no BOM is found
}</code>
Salin selepas log masuk

Fungsi ini membaca bait awal fail dengan cekap dan menggunakannya untuk menentukan pengekodan. Pelaksanaan lengkap analisis BOM kemudiannya akan menyusul, mengendalikan setiap kes BOM secara individu untuk mengembalikan objek Encoding yang sesuai. Ini memastikan pengesanan pengekodan yang boleh dipercayai merentas pelbagai format fail teks.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menentukan Pengekodan Fail dengan Tepat dalam C#?. 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