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

显式指定UTF-8编码保存的CSV文件打开仍显示cp1252编码是什么原因

原因说明
  • 你当前的「文件编码检测逻辑」存在根本错误:打印open()返回的文件对象得到的encoding属性,不是文件实际的存储编码,只是Python读取文件时使用的解码规则。
  • Python 3 中调用open()方法如果不显式传入encoding参数,会自动采用当前操作系统的默认编码作为解码规则,Windows系统的默认编码就是cp1252,这就是你看到对应输出的原因,和你写入文件时指定的utf-8编码没有冲突。
  • pandas.to_csv()指定encoding='utf-8'后,文件确实会以utf-8格式存储,你看到的输出只是读取环节的默认参数导致的,不代表文件存储编码有误。
验证方案

你可以通过两种方式验证文件的实际存储编码:

  1. 读取时显式指定utf-8编码,若可以正常读取无乱码,说明存储编码与指定的编码一致:
# 显式指定解码编码为utf-8
with open(filename, encoding='utf-8') as f:
    content = f.read()
  1. 读取二进制文件内容后用编码检测工具判断,例如用chardet库:
import chardet

# 二进制读取文件原始内容
with open(filename, 'rb') as f:
    raw = f.read()

print(chardet.detect(raw))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 07:48:02