Apabila bekerja dengan data yang dikodkan UTF-8, adalah mungkin untuk menghadapi situasi di mana aksara tidak patuh diterima, menyebabkan kepada ralat "UnicodeDecodeError: codec 'utf8' tidak boleh menyahkod byte 0x9c". Ralat ini menunjukkan bahawa bait tertentu tidak boleh dinyahkodkan kepada aksara Unikod yang sah.
Memahami Isu
Sesetengah pelanggan, terutamanya pelakon berniat jahat, mungkin menghantar data yang mengandungi tidak sah atau aksara UTF-8 yang salah. Ini boleh mengganggu proses penyahkodan, menyebabkan ralat. Dalam kes tertentu, seperti semasa mengelog data untuk analisis kemudian, adalah wajar untuk mengekalkan data semasa menapis aksara bermasalah ini.
Menyelesaikan Masalah
Untuk menyelesaikannya ralat, anda boleh menggunakan pendekatan berikut:
str = unicode(str, errors='replace')
str = unicode(str, errors='ignore')
Penyelesaian Khusus Kes
Dalam kes khusus anda, di mana perkhidmatan soket menjangkakan arahan ASCII, adalah wajar untuk menanggalkan aksara bukan ASCII. Ini boleh dicapai menggunakan pengendali ralat abaikan, seperti yang diterangkan di atas.
Pendekatan Alternatif
Sebagai alternatif, anda boleh menggunakan kaedah terbuka daripada modul codec untuk membaca fail dengan pengekodan dan pengendalian ralat yang ditentukan.
import codecs with codecs.open(file_name, 'r', encoding='utf-8', errors='ignore') as fdata:
Atas ialah kandungan terperinci Bagaimana untuk Mengendalikan Ralat Penyahkodan UTF-8 dengan Aksara Unikod?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!