Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapakah Menyahkod Rentetan dengan Aksara Bukan ASCII Menghasilkan \'UnicodeDecodeError: invalid continuation byte\'?
Ralat Penyahkodan: "UnicodeDecodeError, bait sambungan tidak sah"
Apabila cuba menyahkod rentetan yang mengandungi aksara bukan ASCII menggunakan UTF-8 codec, anda mungkin menemui "UnicodeDecodeError: invalid continuation byte" ralat. Ralat ini menunjukkan bahawa rentetan mengandungi urutan bait yang bukan bait kesinambungan UTF-8 yang sah.
Dalam contoh khusus yang disediakan:
o = "a test of \xe9 char" v = o.decode("utf-8")
Rentetan o mengandungi aksara bukan ASCII xe9 (é). Apabila cuba menyahkodnya menggunakan codec UTF-8, ia gagal dengan ralat yang dinyatakan di atas kerana xe9 ialah bait sambungan UTF-8 yang tidak sah.
Penyelesaian
Penyelesaian ialah menggunakan codec berbeza yang boleh mengendalikan aksara bukan ASCII dalam rentetan. Dalam kes ini, anda boleh menggunakan codec latin-1, yang direka untuk mengendalikan aksara Eropah Barat termasuk aksara beraksen seperti é:
v = o.decode("latin-1")
Penjelasan
The codec latin-1 ialah set aksara bait tunggal yang merangkumi 256 aksara, termasuk huruf abjad Inggeris, aksara beraksen dan beberapa tanda baca. Ia biasanya digunakan untuk mengekod teks dalam bahasa Eropah Barat.
Dengan menggunakan codec latin-1, anda boleh berjaya menyahkod rentetan o tanpa menemui pengecualian "UnicodeDecodeError".
Atas ialah kandungan terperinci Mengapakah Menyahkod Rentetan dengan Aksara Bukan ASCII Menghasilkan \'UnicodeDecodeError: invalid continuation byte\'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!