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

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

DDD
リリース: 2025-01-08 14:21:40
オリジナル
466 人が閲覧しました

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

C# での UTF-8 から ISO-8859-1 への文字列変換を正しく処理する

UTF-8 文字列を ISO-8859-1 (Latin-1) に直接変換すると、多くの場合、データ損失や文字破損が発生します。 これは、ISO-8859-1 が固定長のシングルバイト エンコーディングであるのに対し、UTF-8 は可変長エンコーディングを使用するためです。 適切なバイト変換を行わずにエンコードを変更するだけでは、不正な出力が発生します。

正確な変換の鍵は、Encoding.Convert メソッドを使用することにあります。このメソッドは、UTF-8 バイトを ISO-8859-1 の同等のバイトに適切にマップし、必要な変換を処理します。 ISO-8859-1 に存在しない文字は、最良の近似値に置き換えられるか、失われる可能性があります。

修正された C# コードは次のとおりです:

<code class="language-csharp">Encoding iso = Encoding.GetEncoding("ISO-8859-1");
Encoding utf8 = Encoding.UTF8;
string utf8String = "ÄäÖöÕõÜü"; // Example UTF-8 string
byte[] utf8Bytes = utf8.GetBytes(utf8String);
byte[] isoBytes = Encoding.Convert(utf8, iso, utf8Bytes);
string iso88591String = iso.GetString(isoBytes);</code>
ログイン後にコピー

このコードは、まず元の文字列から UTF-8 バイトを取得します。 次に、Encoding.Convert はこれらのバイトを ISO-8859-1 に適した表現に変換します。 最後に、結果のバイト配列が ISO-8859-1 エンコーディングを使用してデコードされ、最終的な文字列が生成されます。 ISO-8859-1 文字セット以外の文字は、このプロセス中に失われるか置き換えられる可能性があることに注意してください。

以上がC# で UTF-8 文字列を ISO-8859-1 に正しく変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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