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

C# で文字列のエンコーディングを確実に判断するにはどうすればよいですか?

Susan Sarandon
リリース: 2025-01-20 19:23:13
オリジナル
337 人が閲覧しました

How Can I Reliably Determine the Encoding of a String in C#?

C# で文字列エンコーディングを決定する信頼性の高い方法

ファイルやファイル名などのソースの文字列を扱うとき、エンコーディングが不明な状況に遭遇することがよくあります。この場合、データを正しく表示および解釈するには、コーディングを正しく決定することが重要です。 C# には、この問題を解決するいくつかの方法が用意されています。

Encoding.DetectEncoding を使用する

Encoding.DetectEncoding メソッドは、基本的なエンコード検出機能を提供します。バイト パターンの統計分析に基づいてエンコーディングを識別しようとします。ただし、この方法は完全に信頼できるわけではなく、場合によっては失敗する可能性があります。

<code class="language-csharp">Encoding encoding = Encoding.DetectEncoding(bytes);</code>
ログイン後にコピー

カスタムエンコード検出

より正確なエンコード検出のために、カスタム実装を作成できます。これらの方法には通常、バイト パターン、BOM (バイト オーダー マーク)、およびその他のヒューリスティックをチェックしてエンコードを決定することが含まれます。以下はカスタム検出方法の例です:

<code class="language-csharp">public static Encoding DetectEncoding(byte[] bytes)
{
    // 检查 UTF-8 BOM
    if (bytes.Length >= 3 && bytes[0] == 0xEF && bytes[1] == 0xBB && bytes[2] == 0xBF)
    {
        return Encoding.UTF8;
    }
    // 检查 UTF-16 BOM
    else if (bytes.Length >= 2 && bytes[0] == 0xFF && bytes[1] == 0xFE)
    {
        return Encoding.Unicode;
    }
    else if (bytes.Length >= 2 && bytes[0] == 0xFE && bytes[1] == 0xFF)
    {
        return Encoding.BigEndianUnicode;
    }
    // 检查 UTF-32 BOM
    else if (bytes.Length >= 4 && bytes[0] == 0x00 && bytes[1] == 0x00 && bytes[2] == 0xFE && bytes[3] == 0xFF)
    {
        return Encoding.UTF32;
    }
    else if (bytes.Length >= 4 && bytes[0] == 0xFF && bytes[1] == 0xFE && bytes[2] == 0x00 && bytes[3] == 0x00)
    {
        return Encoding.UTF32;
    }
    // 检查 UTF-7 BOM
    else if (bytes.Length >= 3 && bytes[0] == 0x2B && bytes[1] == 0x2F && bytes[2] == 0x76)
    {
        return Encoding.UTF7;
    }
    // 使用默认编码
    else
    {
        return Encoding.Default;
    }
}</code>
ログイン後にコピー

概要

C# で文字列のエンコードを決定するには、組み込みメソッドの制限とカスタム検出メソッドの潜在的な利点を注意深く考慮する必要があります。上記の手法を使用することで、開発者は文字列エンコード検出コードの精度と信頼性を向上させることができます。

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

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