Mac系统下Python写入CSV文件出现乱码问题求助
解决Mac版Microsoft Excel打开UTF-8 CSV乱码问题
问题根源
Mac版Microsoft Excel对不带BOM(字节顺序标记)的UTF-8 CSV文件兼容性差,Python默认用utf-8编码写入时不会添加BOM,导致Excel无法正确解析波斯文这类非ASCII字符。而控制台能正常显示,是因为终端默认支持无BOM的UTF-8编码。
解决方案
方法1:修改Python写入代码,使用带BOM的UTF-8编码
将文件编码从utf-8改为utf-8-sig,该编码会自动在文件开头添加UTF-8 BOM,让Excel正确识别编码。修改后的代码如下:
with open(filename, 'w', newline='', encoding='utf-8-sig') as csvfile: # 创建CSV写入对象 csvwriter = csv.writer(csvfile) # 写入表头 csvwriter.writerow(fields) # 写入数据行 csvwriter.writerows(rows)
方法2:手动为已生成的CSV添加BOM
如果已经生成了无BOM的CSV文件,可通过以下步骤修复:
- 用Mac自带的TextEdit打开该CSV文件
- 点击菜单栏「文件」→「存储为」
- 在弹出窗口的右下角点击「选项」,选择编码为「UTF-8(带BOM)」
- 保存后再用Microsoft Excel打开即可正常显示字符
内容的提问来源于stack exchange,提问作者Mahdi
相关产品推荐
相关产品推荐

