Python unicode csv cyryllic,不转换

时间:2015-11-07 15:56:18

标签: python csv unicode

我有一个将cyryllic写入csv的问题。我使用unicodecsv和下一个片段:

import unicodecsv

ff = open('test.csv', 'wb+')
writer = unicodecsv.writer(ff, encoding='utf-8', delimiter=',', quotechar='"')
writer.writerows([[u'тест', 'aaa', 'nnn']])
ff.close()

csv生成得很好,但是在微软Excel 2011中打开它我看到了: enter image description here

也在Libre办公室试试,同样的问题...... OS:Mac os Yosemite

也不能使用utf-8-sig:

writer = unicodecsv.writer(ff, encoding='utf-8-sig', delimiter=',', quotechar='"')

1 个答案:

答案 0 :(得分:1)

Excel喜欢UTF-8编码的文件具有BOM(字节顺序标记)签名。改为使用utf-8-sig作为编码,否则它认为文件是ANSI编码的。 “ANSI”与语言环境有关,在美国Windows上为Windows-1252

使用UTF-8编码保存的测试源文件:

#coding:utf8
import unicodecsv

with open('test.csv', 'wb+') as ff:
    writer = unicodecsv.writer(ff, encoding='utf-8-sig', delimiter=',', quotechar='"')
    writer.writerows([[u'тест', 'aaa', 'nnn']])

输出:

enter image description here