Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Menukar Rentetan UTF-8 dengan betul kepada ISO-8859-1 dalam 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!