You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python 3 使用csv writer写入UTF-8文件出现乱码问题求助

解决CSV写入UTF-8后的乱码问题

嘿,我来帮你搞定这个乱码难题!你遇到的问题其实很常见——虽然你已经指定了encoding="utf-8"写入,但Windows上的Excel这类默认CSV查看工具,会把无BOM的UTF-8文件当成ANSI编码来解码,这就导致了那些看不懂的乱码字符。

快速解决方案:用UTF-8带BOM编码写入

把打开文件时的encoding="utf-8"改成encoding="utf-8-sig"就行。utf-8-sig会在文件开头自动写入一个BOM标记,让Excel等工具能正确识别这是UTF-8编码的文件。

修改后的代码如下:

from csv import writer
str1 = "idzie wąż wąską dróżką"
str2 = "мир и любовь"

# 替换编码为utf-8-sig,自动添加BOM
with open("myFile.csv", "a", newline="", encoding="utf-8-sig") as csv_file:
    writer_Obj = writer(csv_file, delimiter=';')
    writer_Obj.writerow([str1, str2])

这里我还用了with语句,它会自动帮你关闭文件,比手动调用close()更安全,也更符合Python的最佳实践。

额外说明

  • 如果你用Notepad++、VS Code这类专业文本编辑器打开原本的文件,其实乱码不会出现——它们能正确识别无BOM的UTF-8。问题主要出在Excel这类工具的默认解码逻辑上。
  • 如果你是在Linux或macOS环境下,utf-8本身就够用,但用utf-8-sig也不会有任何副作用,反而能让文件在跨平台查看时更兼容。

内容的提问来源于stack exchange,提问作者eden clarck

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:04:46