我有一个将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中打开它我看到了:
也在Libre办公室试试,同样的问题...... OS:Mac os Yosemite
也不能使用utf-8-sig:
writer = unicodecsv.writer(ff, encoding='utf-8-sig', delimiter=',', quotechar='"')
答案 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']])
输出: