Pesan kesalahan memberitahu Anda apa yang salah. Penerjemah Python perlu mengetahui pengkodean karakter non-ASCII.
Jika Anda ingin mengembalikan U + 00A3 maka Anda dapat mengatakan
return u'\u00a3'
yang mewakili karakter ini dalam ASCII murni melalui urutan pelepasan Unicode. Jika Anda ingin mengembalikan string byte yang berisi byte 0xA3 literal, itu
return b'\xa3'
(di mana dalam Python 2 b
implisit; tetapi eksplisit lebih baik daripada implisit).
PEP terkait dalam pesan kesalahan menginstruksikan Anda persis bagaimana untuk memberitahu Python "file ini bukan ASCII murni; inilah encoding Saya menggunakan". Jika pengkodeannya adalah UTF-8, itu akan menjadi
# coding=utf-8
atau yang kompatibel dengan Emacs
# -*- encoding: utf-8 -*-
Jika Anda tidak tahu pengkodean yang digunakan editor untuk menyimpan file ini, periksa dengan sesuatu seperti hex editor dan beberapa googling. Stack Overflowpengkodean karaktertag memiliki halaman info tag dengan informasi lebih lanjut dan beberapa tips pemecahan masalah.
Dengan begitu banyak kata, di luar rentang ASCII 7-bit (0x00-0x7F), Python tidak bisa dan tidak boleh menebak string apa yang dilambangkan dengan urutan byte. https://tripleee.github.io/8bit#a3 menunjukkan 21 kemungkinan interpretasi untuk byte 0xA3 dan itu hanya dari pengodean 8-bit lama; tetapi bisa juga merupakan byte pertama dari multi-byte encoding. Tetapi pada kenyataannya, saya kira Anda benar-benar menggunakan Latin-1, jadi Anda harus melakukannya
# coding: latin-1
sebagai baris pertama atau kedua dari file sumber Anda. Lagi pula, tanpa pengetahuan tentang karakter byte yang seharusnya mewakili, manusia juga tidak akan bisa menebaknya.
Peringatan: coding: latin-1
pasti akan menghapus pesan kesalahan (karena tidak ada urutan byte yang secara teknis tidak diizinkan dalam pengkodean ini), tetapi mungkin menghasilkan sepenuhnya hasil yang salah ketika kode ditafsirkan jika pengkodean sebenarnya adalah sesuatu yang lain. Anda benar-benar harus mengetahui penyandian file dengan kepastian lengkap ketika Anda mendeklarasikan penyandian.