Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapa saya mendapat \"UnicodeDecodeError: \'utf-8\' codec can\'t decode byte 0xff...\" apabila membaca fail dalam Python?

Mengapa saya mendapat \"UnicodeDecodeError: \'utf-8\' codec can\'t decode byte 0xff...\" apabila membaca fail dalam Python?

Susan Sarandon
Susan Sarandonasal
2024-11-04 07:34:02441semak imbas

Why am I getting

Bagaimana untuk Menyelesaikan "Ralat UnicodeDecodeError: codec 'utf-8' tidak dapat menyahkod bait 0xff dalam kedudukan 0: bait permulaan tidak sah"?

Menghadapi ralat dalam Python ini boleh timbul apabila cuba menukar data tatasusunan bait kepada Rentetan Unicode menggunakan pengekodan utf-8, tetapi urutan bait tidak sah mengikut peraturan utf-8.

Punca utama dalam kes ini ialah Python mentafsir kandungan fail sebagai rentetan berkod utf-8 semasa operasi baca. Walau bagaimanapun, fail itu mungkin mengandungi aksara bukan utf-8, seperti jujukan bait (cth., 0xff) yang bukan bait mula yang sah dalam utf-8.

Untuk menyelesaikan ralat ini, pertimbangkan sifat fail anda dan gunakan penyelesaian berikut:

Penyelesaian:

Sejak fail berkemungkinan fail binari, anda harus memperlakukannya seperti itu. Ubah suai kod bacaan fail untuk menggunakan 'rb' sebagai mod terbuka, seperti yang ditunjukkan di bawah:

<code class="python">with open(path, 'rb') as f:
  contents = f.read()</code>

Dengan menyatakan 'rb', fail akan dibuka dalam mod binari, mengekalkan bait sebagai bait dan bukannya mentafsirkannya sebagai aksara berkod utf-8. Ini akan menghalang Python daripada cuba menyahkod jujukan bait yang tidak sah dan mengelakkan pengecualian.

Atas ialah kandungan terperinci Mengapa saya mendapat \"UnicodeDecodeError: \'utf-8\' codec can\'t decode byte 0xff...\" apabila membaca fail dalam Python?. 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