Heim > Backend-Entwicklung > C++ > Wie kann ich die Kodierung einer Datei mithilfe von Byte Order Marks (BOMs) genau identifizieren?

Wie kann ich die Kodierung einer Datei mithilfe von Byte Order Marks (BOMs) genau identifizieren?

DDD
Freigeben: 2025-01-17 01:47:09
Original
1001 Leute haben es durchsucht

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

Verwenden Sie Byte Order Mark (BOM), um die Dateikodierung genau zu identifizieren

Die

StreamReader.CurrentEncoding-Methode liefert nicht immer zuverlässig Informationen zur Dateikodierung, und die Analyse der Byte Order Mark (BOM) einer Datei ist eine genaue und effiziente Möglichkeit, die Kodierung zu identifizieren. Die Stücklistensequenz (falls vorhanden) kann das Codierungsformat angeben.

Der folgende Codeausschnitt stellt eine Methode namens GetEncoding vor, die die Codierung einer Textdatei basierend auf der Stückliste der Datei bestimmt. Wenn die Stücklistenerkennung fehlschlägt, wird standardmäßig ASCII verwendet:

<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>
Nach dem Login kopieren

Mit dieser Methode können Sie die Codierung einer Datei genau identifizieren und so eine genaue Textinterpretation und -manipulation ermöglichen.

Das obige ist der detaillierte Inhalt vonWie kann ich die Kodierung einer Datei mithilfe von Byte Order Marks (BOMs) genau identifizieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage