Menyelesaikan masalah UnicodeDecodeError dalam Python's UTF-8 Decoding
Menghadapi ralat "UnicodeDecodeError: 'utf-8' codec tidak dapat menyahkod bait 0xff dalam kedudukan 0: bait permulaan tidak sah" menandakan bahawa Python cuba menyahkod jujukan bait menggunakan UTF-8 tetapi menemui bait permulaan yang tidak sah. Ini berlaku apabila tatasusunan bait, diandaikan sebagai rentetan berkod UTF-8, mengandungi aksara di luar pengekodan UTF-8規範。
Punca Ralat
Dalam contoh yang disediakan, membuka fail menggunakan open(path).read() mencetuskan percubaan penyahkodan. Memandangkan fail mengandungi bait yang tidak mematuhi UTF-8, proses penyahkodan gagal, mengakibatkan ralat.
Penyelesaian
Untuk menyelesaikan isu ini, adalah penting untuk mengendalikan fail sebagai binari dan bukannya fail teks. Ini menghalang Python daripada cuba menyahkod bait sebagai rentetan UTF-8.
Dengan mengubah suai kod untuk membuka fail dengan mod 'rb', kami memaksa Python membaca fail sebagai binari:
<code class="python">with open(path, 'rb') as f: contents = f.read()</code>
Menentukan 'b' dalam hujah mod mengarahkan Python untuk merawat fail sebagai strim binari, memastikan kandungan kekal sebagai objek bait, tanpa sebarang percubaan penyahkodan.
Atas ialah kandungan terperinci Mengapa saya menerima \'UnicodeDecodeError: \'utf-8\' codec can\'t decode byte 0xff in position 0: invalid start byte\' apabila menyahkod fail dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!