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

Python3.9生成含非英文字符的UTF-8 CSV在Windows Excel显示异常

Python3生成含非英文字符CSV在Windows Excel乱码的解决方案

核心原因

Windows Excel默认以系统编码(如GBK)打开CSV文件,即使文件是UTF-8编码,若缺少BOM标记,Excel无法自动识别为UTF-8,进而导致乱码。Python3默认文本编码为UTF-8,但手动写入BOM的方式在文本模式下可能存在编码处理偏差。

解决方案一:使用utf-8-sig编码生成带BOM的UTF-8 CSV

这是最直接的兼容方案,utf-8-sig编码会自动在文件头部写入UTF-8 BOM,让Excel直接识别文件编码。同时遵循csv模块官方推荐,指定newline=''避免跨系统换行符解析问题。

代码示例:

import csv

filename = "example.csv"
# 用utf-8-sig编码打开文件,自动添加UTF-8 BOM
with open(filename, 'w', encoding='utf-8-sig', newline='') as fp:
    csv_writer = csv.writer(fp)
    csv_writer.writerows(rows)

解决方案二:生成UTF-16 LE编码的CSV

针对部分旧版本Excel对UTF-8支持不佳的情况,可改用Windows系统原生支持的UTF-16 LE编码,Excel能自动识别该编码。建议用制表符作为分隔符,避免逗号作为小数分隔符导致的列解析错误。

代码示例:

import csv

filename = "example.csv"
with open(filename, 'w', encoding='utf-16', newline='') as fp:
    csv_writer = csv.writer(fp, delimiter='\t')
    csv_writer.writerows(rows)

手动验证与补救方法

  1. 检查文件编码:在Raspbian终端执行file example.csv,确认输出包含UTF-8 Unicode (with BOM)(对应方案一)或UTF-16 Unicode, little-endian(对应方案二)。
  2. 手动导入修正:若仍出现乱码,打开Excel后通过「数据」→「自文本/CSV」选择目标文件,在导入向导中手动指定对应编码(UTF-8或UTF-16)即可正常显示。

内容的提问来源于stack exchange,提问作者Mark.D

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 08:05:29