Menyelesaikan masalah UnicodeDecodeError: Invalid Continuation Byte
Apabila menghadapi ralat "UnicodeDecodeError: 'utf8' codec tidak boleh menyahkod byte sambungan tidak sah "Adalah penting untuk mengenal pasti punca asas. Dalam keadaan ini, isu timbul apabila cuba menyahkod rentetan tertentu yang mengandungi aksara yang dikodkan menggunakan UTF-8.
Aksara xe9 mewakili huruf "é" dalam pengekodan UTF-8. Untuk menyahkodnya dengan betul, anda perlu menggunakan penyahkod yang sesuai yang menyokong aksara UTF-8 ini. Walau bagaimanapun, seperti yang dicadangkan oleh ralat, penyahkod lalai "utf-8" dalam kes ini tidak dapat memproses bait kesinambungan dengan betul.
Mengapa Ia Berjaya dengan Codec "Latin-1"?
Codec "latin-1", juga dikenali sebagai ISO-8859-1, mewakili standard pengekodan aksara berbeza yang tidak sertakan watak "é". Sebaliknya, ia memetakan bait xe9 kepada aksara "í", yang tidak memerlukan bait kesinambungan.
Oleh itu, apabila menggunakan codec "latin-1", penyahkod dengan betul mentafsirkan bait xe9 sebagai "í " dan mengembalikan rentetan "ujian í char" tanpa ralat.
Penyelesaian kepada Isu
Untuk menyelesaikan "UnicodeDecodeError" bagi rentetan asal, seseorang perlu menggunakan penyahkod yang menyokong pengekodan UTF-8. Sebagai contoh, bukannya penyahkod lalai "utf-8", seseorang boleh menggunakan penyahkod "u8" yang direka khusus untuk UTF-8:
v = o.decode("u8")
Sebagai alternatif, rentetan boleh diubah suai untuk menggunakan Latin- 1 dengan menggantikan aksara berkod UTF-8 dengan setara Latin-1:
o = "a test of í char"
Dengan menggunakan yang sesuai penyahkod atau pengekodan, rentetan itu boleh berjaya dinyahkod tanpa menghadapi ralat "UnicodeDecodeError: invalid continuation byte".
Atas ialah kandungan terperinci Mengapakah `UnicodeDecodeError: Invalid Continuation Byte` Berlaku dengan UTF-8, Tetapi Bukan Latin-1?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!