ホームページ > バックエンド開発 > C++ > バイト オーダー マーク (BOM) を使用してファイルのエンコーディングを正確に判断するにはどうすればよいですか?

バイト オーダー マーク (BOM) を使用してファイルのエンコーディングを正確に判断するにはどうすればよいですか?

Susan Sarandon
リリース: 2025-01-17 01:37:08
オリジナル
814 人が閲覧しました

精确确定文件编码的方法:利用字节顺序标记 (BOM)

バイト オーダー マーク (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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート