精準辨識文字檔編碼
確定文字檔案的編碼方式可能很棘手,尤其是在不熟悉編碼概念的情況下。本文將介紹一種可靠的方法,其準確性堪比Notepad 。
位元組順序標記 (BOM) 位於文字檔案開頭的一系列位元組,用於指示檔案的編碼方式。具體如下:
將上述知識轉化為程式碼:
<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>
有了這些工具,您現在可以像專業人士一樣自信地確定任何文字檔案的編碼方式。
以上是如何以程式設計方式精確確定文字檔案的編碼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!