Как правильно записать CSV файл с utf-8 кодировкой в Windows

Кому приходилось работать с Windows, возможно вам знакома следующая проблема. Если записать обычный CSV файл c utf-8 кодировкой и затем открыть его в Excel, то вместо русских букв будут показаны кракозябры.

Оказывается, чтобы исправить эту проблему в Windows к CSV файлу нужно добавлять последовательность символов, известную под названием BOM (Byte order mark). Ниже привожу пример создания utf-8 CSV файла, содержащего русские буквы.

# -*- coding: utf8 -*-
import csv, codecs

f = open("test.csv", "w")

#вот эта строка нужна, чтобы Microsoft Excel правильно понимал кодировку
f.write(codecs.BOM_UTF8)

csv_writer = csv.writer(f)

item = [u"вася",u"пупкин"]
item = [x.encode('utf8') for x in item]
csv_writer.writerow(item)

f.close()

Стоит отметить, что в Linux LibreOffice открывает csv файлы с utf-8 кодировкой без проблем.

Читайте также: