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

pandas读取csv文件报utf-8无法解码0x80字节错误如何解决

问题原因

pandas的read_csv方法默认使用utf-8编码解析文件内容,当目标CSV文件实际存储编码不是UTF-8时,就会触发这类解码报错。你看到的0x80字节不符合UTF-8的编码规则(UTF-8多字节序列的起始字节取值有明确范围,0x80属于后续字节的取值范围,不能出现在起始位置),因此抛出invalid start byte错误。
常见触发场景:

  • 文件是用GBK/GB2312等中文编码、CP1252(Windows ANSI)、Latin-1、UTF-8 BOM等非纯UTF-8编码保存的
  • 文件后缀被手动改成.csv,实际是xls/xlsx等二进制Excel文件
  • 文件传输/下载过程中损坏,出现不符合编码规则的异常字节
可行解决方法

按优先级从高到低尝试以下方案:

  • 优先手动指定匹配的文件编码
    日常场景下绝大多数编码不匹配问题,都可以通过传入encoding参数解决,按文件来源挨个测试常用候选编码即可:
    1. 国内Windows系统下Excel直接导出的CSV,优先试GBK编码:
    import pandas as pd
    df = pd.read_csv('property.csv', encoding='gbk')
    
    1. Windows系统下带BOM头的UTF-8格式CSV,试utf-8-sig编码:
    df = pd.read_csv('property.csv', encoding='utf-8-sig')
    
    1. 西欧语言导出、含特殊符号的CSV,试Latin-1/CP1252编码:
    df = pd.read_csv('property.csv', encoding='latin-1')
    # 上一行不行就替换成cp1252
    # df = pd.read_csv('property.csv', encoding='cp1252')
    
  • 编码自动检测
    如果手动试编码效率低,可以用chardet库自动识别文件编码,再传入pandas读取:
    先安装依赖:pip install chardet
    实现代码:
    import chardet
    import pandas as pd
    
    # 读取文件前10000字节的二进制内容做编码检测,大文件也能快速出结果
    with open('property.csv', 'rb') as f:
        file_encoding = chardet.detect(f.read(10000))['encoding']
    df = pd.read_csv('property.csv', encoding=file_encoding)
    
  • 排查假CSV/文件损坏问题
    如果所有编码都试完仍报错,先验证文件有效性:
    • 用系统自带记事本打开property.csv,如果弹出格式不兼容提示、打开后全是乱码/二进制乱符,说明文件不是纯文本CSV:如果是硬改后缀的Excel文件,改用pd.read_excel('property.csv')读取即可
    • 如果文件是从网络/其他设备传输得到,重新下载/拷贝源文件,排除传输损坏问题
  • 临时跳过错误(不推荐正式场景使用)
    如果只需要快速读取文件做验证,不在乎少量乱码/字符丢失,可以加参数跳过解码失败的字节:
    df = pd.read_csv('property.csv', encoding='utf-8', errors='ignore')
    
    注意:该方式会直接丢弃所有无法解码的字节,可能导致字段内容缺失、数据不准,不要用于正式数据处理流程。

内容的提问来源于stack exchange,提问作者Muhammad kamran khan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 17:48:17