当在 Excel 中打开由 csv 模块使用 utf-8 编码创建的 .csv 文件时,字符已损坏。
如何防止在我的 Excel .csv 文件中发生此错误?
例子
在'utf-8'中写入u'\xe9'(即'é')时,Excel显示 'ã©' 就好像它已经对 'latin-1' 编码进行了某种解码:
print u'\xe9' # basic unicode string
é
u'\xe9'.encode('utf-8') #encode to write into .csv as utf-8
'\xc3\xa9'
u'\xe9'.encode('utf-8').decode('latin-1') # Example of incorrect decoding to unicode
u'\xc3\xa9'
print u'\xe9'.encode('utf-8').decode('latin-1') # print statement == Excel's faulty encoding
ã©
请您参考如下方法:
当写入 csv 文件对象时,我发现通过在其他任何事情之前写入以下内容强制执行正确的行为:
f.write(u'\ufeff'.encode('utf-8'))
其中 f 是由 with open(filename, 'wb') as f: 指定的文件对象
根据 Mark Ransom上面的注释:BOM 专门告诉 Excel 使用 utf-8 编码
