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

データを損失せずに UTF-8 を ISO-8859-1 エンコーディングに正しく変換するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2025-01-08 14:27:41
オリジナル
859 人が閲覧しました

How Can I Correctly Convert UTF-8 to ISO-8859-1 Encoding Without Data Loss?

UTF-8 から ISO-8859-1 へのエンコーディング変換の課題を解決する

異なるエンコーディング間での文字列の変換は、特に非 ASCII 文字が含まれる場合に困難が生じることがよくあります。 よくある問題は、UTF-8 から ISO-8859-1 (Latin-1) への変換です。 誤った変換により、「ÄäÖöÕõÜü」が「Ã?äÃ?öÃ?ÃμÃ?Ã⁄」のようなものに変換される可能性があります。

これは、ISO-8859-1 が固定シングルバイト エンコーディングであるのに対し、UTF-8 は可変長エンコーディングを使用するために発生します。 GetString() などのメソッドを使用した直接変換では、非 ASCII 文字が破損する可能性があります。

解決策は、Encoding.Convert メソッドを使用することです。これにより、変換プロセスが正しく処理されます。UTF-8 バイト配列を取得し、それを ISO-8859-1 バイト配列に変換し、ターゲット エンコーディングを使用してこの配列をデコードします。

修正されたコード スニペットは次のとおりです:

<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>
ログイン後にコピー

このアプローチにより、非 ASCII 文字が正確に変換され、入力例から予想される「ÄäÖöÕõÜü」出力が得られます。 重要なのは、最終デコードの前に Encoding.Convert によって提供される中間バイト配列操作です。

以上がデータを損失せずに UTF-8 を ISO-8859-1 エンコーディングに正しく変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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