Heim > Backend-Entwicklung > C++ > Wie kann ich die Kodierung einer Textdatei programmgesteuert präzise bestimmen?

Wie kann ich die Kodierung einer Textdatei programmgesteuert präzise bestimmen?

Mary-Kate Olsen
Freigeben: 2025-01-17 01:51:09
Original
347 Leute haben es durchsucht

How Can I Programmatically Determine a Text File's Encoding with Precision?

Textdateikodierung genau identifizieren

Die Bestimmung der Kodierung einer Textdatei kann schwierig sein, insbesondere wenn Sie mit Kodierungskonzepten nicht vertraut sind. In diesem Artikel wird eine zuverlässige Methode vorgestellt, deren Genauigkeit mit Notepad vergleichbar ist.

Die Rolle der Byte Order Mark (BOM)

Byte Order Mark (BOM) Eine Folge von Bytes am Anfang einer Textdatei, die angibt, wie die Datei codiert ist. Die Details lauten wie folgt:

  • UTF-7: 2b 2f 76
  • UTF-8: ef bb bf
  • UTF-32 (LE): ff fe 00 00
  • UTF-16 (LE): ff fe
  • UTF-16 (BE):fe ff
  • UTF-32 (BE): 00 00 fe ff

Codebeispiel

Übersetzen Sie das obige Wissen in Code:

<code class="language-csharp">/// <summary>
/// 通过分析字节顺序标记 (BOM) 来确定文本文件的编码方式。
/// 如果无法检测文本文件的字节序,则默认为 ASCII。
/// </summary>
/// <param name="filename">要分析的文本文件。</param>
/// <returns>检测到的编码。</returns>
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

    // 如果编码检测失败,则默认为 ASCII
    return Encoding.ASCII;
}</code>
Nach dem Login kopieren

Mit diesen Tools können Sie jetzt mit der Sicherheit eines Profis die Kodierung jeder Textdatei bestimmen.

Das obige ist der detaillierte Inhalt vonWie kann ich die Kodierung einer Textdatei programmgesteuert präzise bestimmen?. 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage