ファイルのエンコーディングを正確に識別する: 実践的な方法
ファイルエンコーディングを正しく識別することは、テキスト処理にとって非常に重要です。ただし、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 中国語 Web サイトの他の関連記事を参照してください。