C# での UTF-8 から ISO-8859-1 への変換問題の解決
UTF-8 文字列を ISO-8859-1 に変換するときに、正しく処理されないと結果エラーが発生する可能性があります。問題を分析して解決策を提供しましょう。
コードと質問
あなたが提供したコード スニペットは、Encoding.GetString
と Encoding.GetBytes
を使用して UTF-8 を ISO-8859-1 に変換しようとします。ただし、この特定の変換では追加の手順が必要です。
解決策: Encoding.Convert を使用します
ターゲットのエンコードにデコードする前にバイト配列を適切に調整するには、Encoding.Convert
を使用する必要があります。以下は変更されたコードです:
<code class="language-csharp">Encoding iso = Encoding.GetEncoding("ISO-8859-1"); Encoding utf8 = Encoding.UTF8; byte[] utfBytes = utf8.GetBytes(Message); byte[] isoBytes = Encoding.Convert(utf8, iso, utfBytes); string msg = iso.GetString(isoBytes);</code>
説明
Encoding.GetEncoding
特定の文字エンコーディングのエンコーダーとデコーダーを取得します。 Encoding.GetBytes
UTF-8 ソース文字列をバイト配列にエンコードします。ただし、Encoding.GetString
を使用してこのバイト配列を直接デコードしても、目的の ISO-8859-1 文字列は生成されません。
Encoding.Convert
ターゲットのエンコーディングに一致するようにバイト配列を調整します。この場合、ISO-8859-1 エンコーディングに一致するようにバイトが変換されます。調整されたバイト配列は、正しい ISO-8859-1 文字列にデコードできます。 Encoding.GetString
結果
この変更を適用すると、結果の文字列は ISO-8859-1 に正しく変換され、文字化けしません。以上がC# で UTF-8 を ISO-8859-1 に正しく変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。