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>
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>
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!