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
DDDOriginal
2025-01-17 01:47:091006Durchsuche

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>

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!

Stellungnahme:
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