UTF-8编码的CSV文件,在Office的Excel中直接打开往往不能正确的识别文件编码,当然,用libreoffice一般是可以正确提示编码并打开的。这样的CSV可能是以这样的方式生成的:
import csv
rows = [
['姓名', '住址'],
['张三', '李四'],
# ...
]
with open('test.csv', 'w', encoding='utf-8') as csvfile:
writer = csv.writer(csvfile)
for row in rows:
writer.writerow(row)
这里,主要的问题在于一个有关编码的细节,生成文件的编码需要修改一下,当然并不是说要改成其他的编码,比如GBK等,而是需要使用带有BOM的UTF-8编码,从而可以让Excel等软件可以正确的进行识别。代码如下
import csv
rows = [
['姓名', '住址'],
['张三', '李四'],
# ...
]
with open('test.csv', 'w', encoding='utf-8-sig') as csvfile:
writer = csv.writer(csvfile)
for row in rows:
writer.writerow(row)
如代码中所示,只有encoding修改为utf-8-sig就可以了。
本文介绍了如何在使用Python生成CSV文件时,通过添加BOM(ByteOrderMark)确保UTF-8编码被Excel正确识别,避免编码冲突。推荐使用`utf-8-sig`而非常规的`utf-8`来编写CSV文件。
2万+

被折叠的 条评论
为什么被折叠?



