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

Python写入CSV遇UnicodeEncodeError,加UTF-8编码后出现乱码

解决CSV写入时的Unicode编码错误与乱码问题

问题回顾

  • 初始报错:

    UnicodeEncodeError: 'charmap' codec can't encode characters in position 0-2: character maps to

  • 添加encoding='utf-8'后,CSV文件出现乱码:(Ø§Ù„ÙØ±ÙŠÙ‚ الأول)

原因分析

  1. 初始错误是因为Windows系统默认编码(如cp1252)无法处理阿拉伯语这类非ASCII字符,导致编码失败。
  2. 加utf-8后仍乱码,是因为Excel默认不识别无BOM的UTF-8文件,会用系统编码解析UTF-8内容,导致字符显示错乱。

解决方案

核心修复:使用带BOM的UTF-8编码写入

将文件编码改为utf-8-sig,它会在文件开头添加UTF-8 BOM标识,让Excel能正确识别UTF-8编码:

# 用原始字符串避免路径转义问题
with open(r'F:\Temp\python\matches-details.csv', 'w', encoding='utf-8-sig') as output_file:
    dict_writer = csv.DictWriter(output_file, keys)
    dict_writer.writeheader()
    dict_writer.writerows(matches_details)
    print("file created")

额外优化:规范路径写法

原路径中的\T、\p可能被Python解析为转义字符,建议用原始字符串(前缀r)或双反斜杠\\,避免路径解析出错。

验证方式

修改后打开CSV文件:

  • 直接用Excel打开,非ASCII字符应正常显示。
  • 用文本编辑器(如Notepad++)打开,选择UTF-8编码查看,确认内容无乱码。

内容的提问来源于stack exchange,提问作者Mohamed Elbrawy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 08:42:02