Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Menukar Rentetan UTF-8 dengan betul kepada ISO-8859-1 dalam C#?

Bagaimana untuk Menukar Rentetan UTF-8 dengan betul kepada ISO-8859-1 dalam C#?

DDD
DDDasal
2025-01-08 14:21:40471semak imbas

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

Mengendalikan Penukaran Rentetan UTF-8 kepada ISO-8859-1 dengan betul dalam C#

Penukaran terus rentetan UTF-8 kepada ISO-8859-1 (Latin-1) selalunya mengakibatkan kehilangan data dan kerosakan aksara. Ini kerana UTF-8 menggunakan pengekodan panjang berubah-ubah, manakala ISO-8859-1 ialah pengekodan panjang tetap, satu bait. Hanya menukar pengekodan tanpa penukaran bait yang betul akan membawa kepada output yang salah.

Kunci kepada penukaran yang tepat terletak pada penggunaan kaedah Encoding.Convert. Kaedah ini memetakan bait UTF-8 dengan betul kepada setara ISO-8859-1 mereka, mengendalikan sebarang transformasi yang diperlukan. Aksara yang tidak terdapat dalam ISO-8859-1 akan digantikan dengan anggaran terbaiknya atau mungkin hilang.

Berikut ialah kod C# yang diperbetulkan:

<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>

Kod ini mula-mula mendapat UTF-8 bait daripada rentetan asal. Kemudian, Encoding.Convert menukar bait ini menjadi perwakilan yang sesuai untuk ISO-8859-1. Akhir sekali, tatasusunan bait yang terhasil dinyahkod menggunakan pengekodan ISO-8859-1 untuk menghasilkan rentetan akhir. Ingat bahawa mana-mana aksara di luar set aksara ISO-8859-1 mungkin hilang atau diganti semasa proses ini.

Atas ialah kandungan terperinci Bagaimana untuk Menukar Rentetan UTF-8 dengan betul kepada ISO-8859-1 dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn