Ralat Penyahkodan dalam Python: UnicodeDecodeError semasa Menukar Bait
Ralat biasa yang dihadapi dalam Python apabila bekerja dengan rentetan ialah UnicodeDecodeError apabila cuba menyahkod bait menggunakan codec UTF-8. Ralat ini berlaku apabila Python cuba mentafsir tatasusunan bait sebagai rentetan berkod UTF-8 dan menemui jujukan bait yang tidak mematuhi peraturan UTF-8.
Dalam kes khusus yang dirujuk dalam yang disediakan URL, ralat ditemui semasa menyusun skrip "process.py" daripada repositori GitHub pix2pix-tensorflow. Skrip cuba membaca dan memuatkan fail (khususnya imej) menggunakan open(). Apabila Python cuba menyahkod kandungan fail sebagai rentetan UTF-8, ia gagal kerana jujukan bait pada permulaan fail tidak dibenarkan dalam pengekodan UTF-8.
Punca ralat ini ialah ketidakpadanan antara sifat sebenar kandungan fail dan andaian Python bahawa ia dikodkan UTF-8. Fail asal mungkin fail perduaan, seperti imej atau data termampat, yang tidak boleh dinyahkodkan dengan pasti sebagai UTF-8.
Untuk menyelesaikan isu ini, seseorang harus membaca fail itu sebagai data binari secara eksplisit menggunakan ' mod rb' dalam fungsi open():
<code class="python">with open(path, 'rb') as f: contents = f.read()</code>
Dengan menggunakan mod 'rb', Python akan menganggap fail sebagai binari dan tidak akan cuba menyahkodnya. Ini akan menghalang UnicodeDecodeError daripada berlaku.
Atas ialah kandungan terperinci Mengapa Kod Python Saya Membuang UnicodeDecodeError Semasa Membaca Fail?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!