Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapa saya menerima \"UnicodeDecodeError: \'utf-8\' codec can\'t decode byte 0xff in position 0: invalid start byte\" apabila menyahkod fail dalam Python?

Mengapa saya menerima \"UnicodeDecodeError: \'utf-8\' codec can\'t decode byte 0xff in position 0: invalid start byte\" apabila menyahkod fail dalam Python?

Patricia Arquette
Patricia Arquetteasal
2024-11-04 13:13:29363semak imbas

Why am I receiving a

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!

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