Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapa saya mendapat UnicodeDecodeError: codec \'utf-8\' tidak boleh menyahkod bait apabila melelaran melalui fail teks?

Mengapa saya mendapat UnicodeDecodeError: codec \'utf-8\' tidak boleh menyahkod bait apabila melelaran melalui fail teks?

Patricia Arquette
Patricia Arquetteasal
2024-11-04 13:35:011048semak imbas

Why am I getting a UnicodeDecodeError: 'utf-8' codec can't decode byte when iterating through a text file?

"untuk baris masuk..." Keputusan dalam UnicodeDecodeError: Codec 'utf-8' Tidak Dapat Menyahkod Bait

Apabila cuba untuk lelaran melalui baris fail teks menggunakan sintaks "for line in open('filename')", pengaturcara mungkin menghadapi UnicodeDecodeError yang menunjukkan bahawa codec 'utf-8' tidak boleh menyahkod bait tertentu. Ralat ini biasanya berlaku apabila pengekodan fail teks tidak sepadan dengan pengekodan yang diandaikan oleh codec 'utf-8'.

Menyelesaikan Isu

Untuk menyelesaikan masalah ini ralat, adalah perlu untuk menentukan pengekodan yang betul bagi fail teks semasa membukanya. Ini boleh dicapai dengan menambahkan parameter "pengekodan=" pada fungsi open(), seperti yang dilihat di bawah:

<code class="python">for line in open('filename', encoding='utf-8'):
    # Read each line</code>

Dalam sesetengah kes, pengekodan yang dinyatakan mungkin tidak betul, membawa kepada ralat yang sama. Untuk menentukan pengekodan yang sesuai, pengaturcara boleh memeriksa fail teks dan mengenal pasti set aksara yang digunakan.

Sebagai contoh, coretan kod yang disediakan oleh penyoal:

<code class="python">for line in open('u.item'):
    # Read each line</code>

Gagal menyahkod fail teks kerana pengekodan telah salah diandaikan sebagai 'utf-8'. Dengan memeriksa fail teks, didapati pengekodan yang betul ialah "ISO-8859-1". Mengubah suai kod seperti berikut menyelesaikan isu:

<code class="python">for line in open('u.item', encoding='ISO-8859-1'):
    # Read each line</code>

Atas ialah kandungan terperinci Mengapa saya mendapat UnicodeDecodeError: codec \'utf-8\' tidak boleh menyahkod bait apabila melelaran melalui fail teks?. 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