UnicodeDecodeError: Menangani Bait Penerusan Tidak Sah
Apabila bekerja dengan rentetan Unicode, anda mungkin menghadapi "UnicodeDecodeError: 'utf8' codec can 't menyahkod bait 0xe9 dalam kedudukan 10: tidak sah bait kesinambungan" ralat. Ralat ini menunjukkan masalah dengan proses penyahkodan, khususnya dengan bait sambungan yang tidak sah.
Untuk menyahkod aksara Unikod berbilang bait dengan betul, bait pertama (dikenali sebagai mukadimah) diikuti oleh satu atau lebih bait sambungan. Bait kesinambungan ini mesti berada dalam julat tertentu untuk aksara dinyahkod dengan betul. Dalam kes ini, bait dalam kedudukan 10 (0xe9) tidak sesuai dalam julat ini, membawa kepada ralat.
Memahami Codec "latin-1"
Apabila anda menyahkod rentetan dengan codec "latin-1", ia berjaya kerana codec ini mentafsir bait bermasalah (0xe9) sebagai aksara bait tunggal. "latin-1" ialah pengekodan 8-bit yang memetakan setiap bait kepada aksara tertentu, tidak seperti Unicode yang boleh menggunakan berbilang bait untuk mewakili aksara. Oleh itu, dalam kes ini, "latin-1" hanya menganggap bait sebagai aksara, dengan berkesan memintas ralat.
Contoh: Menyahkod dengan "latin-1"
Menggunakan "latin-1" untuk menyahkod rentetan:
o = "a test of \xe9 char" v = o.decode("latin-1") print(v)
Output:
a test of é char
Dalam kes ini, bait bermasalah dinyahkodkan sebagai aksara "é", yang merupakan aksara yang sah dalam "latin-1". Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa pendekatan ini boleh menyebabkan kehilangan maklumat jika rentetan mengandungi aksara Unikod lain yang tidak boleh diwakili dalam pengekodan "latin-1".
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan 'UnicodeDecodeError: 'utf8' codec tidak dapat menyahkod bait...' Ralat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!