精準辨識文件編碼:實用方法
正確識別文件編碼對於文字處理至關重要。然而,StreamReader.CurrentEncoding
屬性常常無法提供準確的結果。為了解決這個問題,更可靠的方法是分析檔案的位元組順序標記 (BOM)。
BOM 的作用
BOM 是一系列位元組,用於指示文字檔案的位元組序和編碼。常見的 BOM 包括:
基於 BOM 確定檔案編碼
以下 C# 程式碼提供了一個詳細的實作:
<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>
使用此方法,您可以準確識別任何文字檔案的編碼,確保正確的資料解釋和文字處理。
以上是如何使用位元組順序標記 (BOM) 可靠地確定文件的編碼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!