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
Lepaskan: 2024-11-26 11:20:09
asal
205 orang telah melayarinya

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

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

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