Прежде всего, используйте 2.6 версию документации .Это может измениться для каждого выпуска.В нем четко сказано, что он не поддерживает Unicode, но поддерживает UTF-8. Технически , это не одно и то же.Как сказано в документации:
Модуль csv напрямую не поддерживает чтение и запись в Юникоде, но он 8-разрядный, за исключением некоторых проблем с символами ASCII NUL.Таким образом, вы можете написать функции или классы, которые обрабатывают кодирование и декодирование для вас, если вы избегаете кодировок, таких как UTF-16, которые используют NUL.Рекомендуется UTF-8.
В приведенном ниже примере (из документов) показано, как создать две функции, которые правильно читают текст как UTF-8 как CSV.Вы должны знать, что csv.reader()
всегда возвращает объект DictReader.
import csv
def unicode_csv_reader(unicode_csv_data, dialect=csv.excel, **kwargs):
# csv.py doesn't do Unicode; encode temporarily as UTF-8:
csv_reader = csv.DictReader(utf_8_encoder(unicode_csv_data),
dialect=dialect, **kwargs)
for row in csv_reader:
# decode UTF-8 back to Unicode, cell by cell:
yield [unicode(cell, 'utf-8') for cell in row]