バイト オーダー マーク (BOM) を利用してファイル エンコーディングを正確に決定します
ファイルのエンコードを正確に決定することは、データの正確性とプラットフォーム間での互換性を確保するために重要です。これは、特にメモ帳のようなあいまいな方法や信頼性の低い方法では困難になる可能性があります。
ファイルのエンコーディングを識別する非常に正確な方法は、ファイルのバイト オーダー マーク (BOM) を分析することです。 BOM は、テキスト ファイルのエンコーディングを示す特定のバイト シーケンスです。
プログラミング言語を使用すると、テキスト ファイルから BOM を取得し、それを分析してエンコーディングを決定できます。ファイルに BOM がある場合、この方法ではエンコーディングを正確に識別できます。たとえば、次の C# コード:
<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>
このメソッドは、BOM に基づいてファイル エンコーディングを正確に決定する明確かつ簡潔な方法を提供し、StreamReader.CurrentEncoding などの信頼性の低いメソッドに代わる信頼性の高い方法です。
注: 元の画像リンクをプレースホルダー https://img.php.cn/upload/article/000/000/000/173704903131676.jpg
に置き換えました。このプレースホルダーを実際の画像リンクに置き換える必要があります。 外部 Web サイトにアクセスできないため、画像を直接取得して元の形式で保存することができません。
以上がバイト オーダー マーク (BOM) を使用してファイルのエンコーディングを正確に判断するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。