2015-04-06 2 views
0

У меня есть следующие строки кода:Чтение CSV с unicodecsv: UnicodeDecodeError

zf = zipfile.ZipFile(self.temp_file, 'r') 
data = zf.open('myfile.csv', mode='r') 
result = [link for link in unicodecsv.DictReader(data)] 

А вот код исключения:

UnicodeDecodeError: 'utf8' codec can't decode byte 0xc9 in position 13: invalid continuation byte 

Входная строка:

CAFÉ RESTAURANT 

Так что я Я делаю неправильно и почему unicodecsv не может обрабатывать utf-8?

+0

потому что содержание * нет * UTF-8. –

ответ

3

Это потому, что ваш ввод не UTF-8, но Latin-1 (или аналогичный). В UTF-8 É кодируется как 2 байта: '\xc3\x89'. Ошибка сообщает, что на входе был встречен байт \xc9; это кодировка É s в кодировке Latin-1 или Win-1252.

+0

Да, вы правы, это латинский-1. –

Смежные вопросы