Я читаю в файле с модулем Python csv
, и у меня есть еще один вопрос о кодировке (извините, здесь так много).
В файле CSV есть знаки £.После прочтения строки и ее печати они стали \ xa3.
Попытка кодировать их как Unicode приводит к UnicodeDecodeError
:
row = [unicode(x.strip()) for x in row]
UnicodeDecodeError: 'ascii' codec can't decode byte 0xa3 in position 0: ordinal not in range(128)
Я читал документацию csv и множество других вопросов об этом в StackOverflow.Я думаю, что означает, что, став ASCII \ xa3, означает, что исходный файл CSV находится в формате UTF-8.
(Кстати, есть ли быстрый способ проверить кодировку файла CSV?)
Если он находится в UTF-8, то не должен ли модуль csv справиться с этим??Кажется, что он преобразовывает все символы в ASCII, хотя в документации утверждается, что он принимает UTF-8.
Я попытался добавить функцию unicode_csv_reader
, как описано в примерах csv , но это не помогает.
---- РЕДАКТИРОВАТЬ -----
Я должен уточнить одну вещь.Я видел этот вопрос , который выглядит очень похоже.Но добавление определенной здесь функции unicode_csv_reader
приводит к другой ошибке:
yield [unicode(cell, 'utf-8') for cell in row]
UnicodeDecodeError: 'utf8' codec can't decode byte 0xa3 in position 8: unexpected code byte
Так, может, мой файл все-таки не UTF8?Как я могу сказать?