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

Python Pandas读取CSV遇UnicodeDecodeError:试cp1251仍报错求助

解决Pandas读取CSV时的UnicodeDecodeError问题

首先,这个错误和保加利亚西里尔语设置没有关系——你提到数据里不包含西里尔字符,那问题根源是你的CSV文件实际使用的编码既不是utf-8,也不是你尝试的cp1251。错误里的0xc0字节在UTF-8中是无效的起始字节,说明文件本身的编码规则和你指定的不匹配。

下面是一步步的解决方法:

1. 先检测文件的真实编码

最稳妥的方式是用工具检测文件的实际编码,推荐使用chardet库(或者更快的cchardet):

  • 先安装库:
    pip install chardet
    
  • 然后写一段简单的代码检测编码:
    import chardet
    
    # 读取文件前10000字节进行检测(足够判断编码)
    with open('kgb.csv', 'rb') as file:
        encoding_result = chardet.detect(file.read(10000))
    
    print(encoding_result)
    
    输出会类似这样:{'encoding': 'ISO-8859-1', 'confidence': 0.73, 'language': ''},其中encoding字段就是你需要的编码值。

2. 使用检测到的编码读取文件

拿到检测结果后,直接用这个编码读取:

import pandas as pd

df = pd.read_csv('kgb.csv', header=0, encoding=encoding_result['encoding'])

3. 备选方案:使用兼容所有字节的编码

如果暂时无法检测到准确编码,或者检测结果不准,可以试试latin-1(也就是ISO-8859-1)——这个编码会映射所有可能的字节,不会抛出解码错误,之后你可以再将数据转换为UTF-8:

df = pd.read_csv('kgb.csv', header=0, encoding='latin-1')
# 可选:将数据转存为UTF-8编码的文件
df.to_csv('kgb_utf8.csv', encoding='utf-8', index=False)

为什么cp1251没用?

cp1251是专为西里尔语设计的编码,你的数据里没有这类字符,而且文件实际编码也不是它,自然无法解决解码问题。核心还是要匹配文件本身的编码规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:38:51