Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menukar UTF-8 dengan Betul kepada Pengekodan ISO-8859-1 Tanpa Kehilangan Data?
Menyelesaikan Cabaran Penukaran Pengekodan UTF-8 kepada ISO-8859-1
Menukar rentetan aksara antara pengekodan yang berbeza, terutamanya apabila aksara bukan ASCII terlibat, selalunya menimbulkan kesukaran. Masalah yang kerap berlaku ialah menukar daripada UTF-8 kepada ISO-8859-1 (Latin-1). Penukaran yang salah mungkin mengubah "ÄäÖöÕõÜü" kepada sesuatu seperti "Ã?äÃ?öÃ?õÃ?ü".
Ini berlaku kerana UTF-8 menggunakan pengekodan panjang berubah-ubah, manakala ISO-8859-1 ialah pengekodan bait tunggal tetap. Penukaran terus menggunakan kaedah seperti GetString()
boleh merosakkan aksara bukan ASCII.
Penyelesaian terletak pada menggunakan kaedah Encoding.Convert
. Ini mengendalikan proses penukaran dengan betul: ia mengambil tatasusunan UTF-8 bait, mengubahnya menjadi tatasusunan bait ISO-8859-1, dan kemudian menyahkod tatasusunan ini menggunakan pengekodan sasaran.
Berikut ialah coretan kod yang diperbetulkan:
<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>
Pendekatan ini memastikan penukaran aksara bukan ASCII yang tepat, menghasilkan output "ÄäÖöÕõÜü" yang dijangkakan daripada input contoh. Kuncinya ialah manipulasi tatasusunan bait perantaraan yang disediakan oleh Encoding.Convert
sebelum penyahkodan akhir.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menukar UTF-8 dengan Betul kepada Pengekodan ISO-8859-1 Tanpa Kehilangan Data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!