http://docs.python.org/howto/unicode.html#tipe-unicode
str = unicode(str, errors='replace')
atau
str = unicode(str, errors='ignore')
Catatan: Ini akan menghapus (mengabaikan) karakter yang dimaksud mengembalikan string tanpa mereka.
Bagi saya ini adalah kasus ideal karena saya menggunakannya sebagai perlindungan terhadap input non-ASCII yang tidak diizinkan oleh aplikasi saya.
Atau: Gunakan metode terbuka dari codecs
modul untuk membaca dalam file:
import codecs
with codecs.open(file_name, 'r', encoding='utf-8',
errors='ignore') as fdata:
Mengubah mesin dari C ke Python membantu saya.
Mesin adalah C:
pd.read_csv(gdp_path, sep='\t', engine='c')
codec 'utf-8' tidak dapat mendekode byte 0x92 di posisi 18:byte awal tidak valid
Mesinnya adalah Python:
pd.read_csv(gdp_path, sep='\t', engine='python')
Tidak ada kesalahan untuk saya.
Jenis masalah ini muncul untuk saya sekarang karena saya telah pindah ke Python 3. Saya tidak tahu Python 2 hanya menggulung masalah apa pun dengan pengkodean file.
Saya menemukan penjelasan yang bagus tentang perbedaan dan bagaimana menemukan solusi setelah tidak ada yang bekerja untuk saya.
http://python-notes.curiousefficiency.org/en/latest/python3/text_file_processing.html
Singkatnya, untuk membuat Python 3 berperilaku semirip mungkin dengan penggunaan Python 2:
with open(filename, encoding="latin-1") as datafile:
# work on datafile here
Namun, baca artikelnya, tidak ada solusi yang cocok untuk semua.