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.
Byte Order Mark (BOM) Eine Folge von Bytes am Anfang einer Textdatei, die angibt, wie die Datei codiert ist. Die Details lauten wie folgt:
Ü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>
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!