Dateikodierung genau identifizieren: praktische Methoden
Die korrekte Identifizierung der Dateikodierung ist für die Textverarbeitung von entscheidender Bedeutung. Allerdings liefert das Attribut StreamReader.CurrentEncoding
oft keine genauen Ergebnisse. Um dieses Problem zu lösen, besteht eine zuverlässigere Methode darin, die Byte Order Mark (BOM) der Datei zu analysieren.
Die Rolle der Stückliste
Die Stückliste ist eine Folge von Bytes, die die Endianness und Kodierung einer Textdatei angibt. Zu den gängigen Stücklisten gehören:
Bestimmen Sie die Dateikodierung basierend auf der Stückliste
Der folgende C#-Code bietet eine detaillierte Implementierung:
<code class="language-csharp">public static Encoding GetEncoding(string filename) { // 读取 BOM byte[] 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 jeder Textdatei genau identifizieren und so eine korrekte Dateninterpretation und Textverarbeitung sicherstellen.
Das obige ist der detaillierte Inhalt vonWie lässt sich die Kodierung einer Datei mithilfe ihrer Byte Order Mark (BOM) zuverlässig bestimmen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!