Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Menukar UTF-8 dengan betul kepada ISO-8859-1 dalam C#?
Menyelesaikan masalah penukaran UTF-8 kepada ISO-8859-1 dalam C#
Apabila menukar rentetan UTF-8 kepada ISO-8859-1, anda mungkin menghadapi ralat hasil jika tidak dikendalikan dengan betul. Mari analisa masalah dan berikan penyelesaian.
Kod dan soalan
Coretan kod yang anda berikan cuba menukar UTF-8 kepada ISO-8859-1 menggunakan Encoding.GetString
dan Encoding.GetBytes
. Walau bagaimanapun, untuk penukaran tertentu ini, langkah tambahan diperlukan.
Penyelesaian: Gunakan Pengekodan.Tukar
Untuk melaraskan tatasusunan bait dengan betul sebelum menyahkod kepada pengekodan sasaran, Encoding.Convert
hendaklah digunakan. Berikut ialah kod yang diubah suai:
<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>
Penjelasan
Encoding.GetEncoding
Mengambil pengekod dan penyahkod untuk pengekodan aksara tertentu. Encoding.GetBytes
Enkodkan rentetan sumber UTF-8 ke dalam tatasusunan bait. Walau bagaimanapun, menyahkod tatasusunan bait ini secara langsung menggunakan Encoding.GetString
tidak menghasilkan rentetan ISO-8859-1 yang dikehendaki.
Encoding.Convert
Laraskan tatasusunan bait agar sepadan dengan pengekodan sasaran. Dalam kes ini, ia menukar bait supaya sepadan dengan pengekodan ISO-8859-1. Tatasusunan bait yang dilaraskan kemudiannya boleh dinyahkodkan menjadi rentetan ISO-8859-1 yang betul. Encoding.GetString
Keputusan
Selepas menggunakan pengubahsuaian ini, rentetan yang terhasil akan ditukar dengan betul kepada ISO-8859-1 dan tidak akan bercelaru.Atas ialah kandungan terperinci Bagaimana untuk Menukar UTF-8 dengan betul kepada ISO-8859-1 dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!