ホームページ >バックエンド開発 >C++ >C# で UTF-8 を ISO-8859-1 に正しく変換するにはどうすればよいですか?

C# で UTF-8 を ISO-8859-1 に正しく変換するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-08 14:11:46354ブラウズ

How to Correctly Convert UTF-8 to ISO-8859-1 in C#?

C# での UTF-8 から ISO-8859-1 への変換問題の解決

UTF-8 文字列を ISO-8859-1 に変換するときに、正しく処理されないと結果エラーが発生する可能性があります。問題を分析して解決策を提供しましょう。

コードと質問

あなたが提供したコード スニペットは、Encoding.GetStringEncoding.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.GetBytesUTF-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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。