Verwenden Sie Byte Order Mark (BOM), um die Dateikodierung genau zu identifizieren
DieStreamReader.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!