Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Menukar UTF-8 dengan Betul kepada Pengekodan ISO-8859-1 Tanpa Kehilangan Data?

Bagaimanakah Saya Boleh Menukar UTF-8 dengan Betul kepada Pengekodan ISO-8859-1 Tanpa Kehilangan Data?

Mary-Kate Olsen
Lepaskan: 2025-01-08 14:27:41
asal
898 orang telah melayarinya

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

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan