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

如何通过pd.read_csv与pd.to_csv统一不同来源文件的编码?

解决葡萄牙语词汇CSV导出编码乱码问题

问题根源

你遇到的情况本质是编码识别冲突:

  • 用纯UTF-8导出CSV时,Windows自带记事本、部分旧版Excel会默认以**latin1(ANSI)**编码打开,把UTF-8格式的é(二进制C3 A9)解析成latin1的Ã+©,就出现了assembléia的乱码。
  • 改用latin1导出虽能让这个词正常显示,但latin1仅支持256个字符,遇到其他文件里的特殊Unicode字符(比如生僻葡语词汇、跨语言字符)就会触发UnicodeEncodeError。

统一解决方案:用UTF-8带BOM导出

最稳妥的统一方法是用**utf-8-sig**编码导出CSV,它会在文件开头添加BOM标记,让Windows的阅读器(记事本、Excel)能正确识别这是UTF-8编码,同时兼容所有Unicode字符,不会出现编码错误。

修改后的示例代码

import pandas as pd

data = {'Palavra': ['assembléia']}
df = pd.DataFrame(data)

nome_arquivo_csv = r'C:\Users\user\OneDrive\Documents\cv - general\palavra_assembleia.csv'
# 指定utf-8-sig编码导出
df.to_csv(nome_arquivo_csv, index=False, encoding='utf-8-sig')

配套的读取统一规则

读取不同来源的文件时,也统一编码处理:

  • 优先用encoding='utf-8'读取,若报错则尝试encoding='utf-8-sig';
  • 如果还是读取失败,再尝试encoding='latin1'读取,读取后DataFrame会自动转成Unicode存储,后续导出时依然用utf-8-sig即可,不会再触发编码错误。

验证效果

用utf-8-sig导出的CSV:

  • 用Windows记事本打开能正常显示assembléia;
  • 用Excel打开会自动识别编码,无需手动选择;
  • 处理包含特殊Unicode字符的其他文件时,不会出现UnicodeEncodeError。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 03:44:57