Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapakah Menyahkod Rentetan dengan Aksara Bukan ASCII Menghasilkan \'UnicodeDecodeError: invalid continuation byte\'?

Mengapakah Menyahkod Rentetan dengan Aksara Bukan ASCII Menghasilkan \'UnicodeDecodeError: invalid continuation byte\'?

Patricia Arquette
Patricia Arquetteasal
2024-11-26 11:20:09189semak imbas

Why Does Decoding a String with Non-ASCII Characters Result in a

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!

Kenyataan:
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