Rumah > Artikel > pembangunan bahagian belakang > Mengapa saya mendapat UnicodeDecodeError: codec \'utf-8\' tidak boleh menyahkod bait apabila melelaran melalui fail teks?
"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!