ホームページ > バックエンド開発 > C++ > C# でファイルのエンコーディングを正確に判断するにはどうすればよいですか?

C# でファイルのエンコーディングを正確に判断するにはどうすればよいですか?

Linda Hamilton
リリース: 2025-01-17 01:41:08
オリジナル
207 人が閲覧しました

How Can I Accurately Determine a File's Encoding in C#?

C# でのファイル エンコーディングの正確な識別

ファイルのエンコーディングを正確に決定することは、データを正しく処理するために非常に重要です。 StreamReader.CurrentEncoding は失敗することがありますが、より堅牢な方法にはバイト オーダー マーク (BOM) の分析が含まれます。このアプローチは、メモ帳で使用されるものと同様で、より高い精度を提供します。

バイト オーダー マーク (BOM) の活用

BOM の存在は、エンコーディングの識別に非常に役立ちます。 次の BOM 値は、特定のエンコーディングに対応します:

  • UTF-7: 0x2b、0x2f、0x76
  • UTF-8: 0xef、0xbb、0xbf
  • UTF-32LE: 0xff、0xfe、0x00、0x00
  • UTF-16LE: 0xff、0xfe
  • UTF-16BE: 0xfe、0xff
  • UTF-32BE: 0x00、0x00、0xfe、0xff

BOM が検出されない場合、エラーを防ぐためにコードはデフォルトの ASCII に設定されます。

BOM 分析のための C# コード実装

次の C# コードは、この BOM ベースのエンコード検出を示しています。

<code class="language-csharp">public static Encoding GetEncoding(string filename)
{
    byte[] bom = new byte[4];
    using (FileStream file = new FileStream(filename, FileMode.Open, FileAccess.Read))
    {
        file.Read(bom, 0, 4);
    }

    // BOM analysis logic (see complete implementation below)

    return Encoding.ASCII; // Default to ASCII if no BOM is found
}</code>
ログイン後にコピー

この関数は、ファイルの最初のバイトを効率的に読み取り、それを使用してエンコードを決定します。 次に、BOM 分析の完全な実装が続き、各 BOM ケースを個別に処理して、適切な Encoding オブジェクトを返します。 これにより、さまざまなテキスト ファイル形式にわたって信頼性の高いエンコード検出が保証されます。

以上がC# でファイルのエンコーディングを正確に判断するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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