Mengapa Python Membuang \'UnicodeDecodeError: \'utf-8\' codec tidak boleh menyahkod byte 0xff...\' Ralat Semasa Membuka Fail?

Patricia Arquette
Lepaskan: 2024-11-03 21:07:29
asal
745 orang telah melayarinya

Why Does Python Throw a

Penyelesaian masalah: "UnicodeDecodeError: codec 'utf-8' tidak boleh menyahkod bait 0xff..." dalam Python Tools/Process.py

Semasa menyusun "process.py" daripada repositori pix2pix-tensorflow, Python menimbulkan ralat "UnicodeDecodeError: codec 'utf-8' tidak boleh menyahkod bait 0xff dalam kedudukan 0: bait permulaan tidak sah." Setelah mengesan ralat, ia menunjuk ke baris 113 dalam "process.py":

<code class="python">contents = open(path).read()</code>
Salin selepas log masuk

Memahami Ralat:

Python cuba menyahkod tatasusunan bait yang mewakili rentetan yang dikodkan UTF-8 ke dalam rentetan Unicode. Semasa proses penyahkodan ini, ia menemui jujukan bait yang tidak sah "0xff" pada permulaan tatasusunan bait. Urutan bait ini tidak dibenarkan dalam pengekodan UTF-8, menyebabkan ralat.

Punca Kemungkinan:

Laluan yang disediakan kepada fungsi open() berkemungkinan mengandungi data binari itu bukan dikodkan UTF-8. Ini bermakna Python menjangkakan data teks dan menemui aksara bukan teks, yang membawa kepada kegagalan penyahkodan.

Penyelesaian:

Untuk menyelesaikan ralat, ia perlu untuk mengendalikan fail dalam mod binari. Ini menghalang Python daripada cuba menyahkod data binari sebagai teks. Begini cara untuk melakukannya:

<code class="python">with open(path, 'rb') as f:
  contents = f.read()</code>
Salin selepas log masuk

Dengan menambahkan 'b' pada mod open(), fail dianggap sebagai perduaan dan kandungannya dibaca sebagai bait dan bukannya cuba menyahkodnya sebagai teks. Ini sepatutnya menyelesaikan UnicodeDecodeError.

Atas ialah kandungan terperinci Mengapa Python Membuang \'UnicodeDecodeError: \'utf-8\' codec tidak boleh menyahkod byte 0xff...\' Ralat Semasa Membuka Fail?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan