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

Python 3.6服务器读取CSV文件遇UnicodeDecodeError问题求助

解决Python 3.6读取CSV时的UnicodeDecodeError问题

这个错误很常见,本质是你指定的utf-8编码和文件实际的编码不匹配导致的。给你几个实用的解决办法:

  • 先尝试常见的替代编码打开文件
    很多非utf-8编码的文本文件用latin-1或者cp1252(Windows环境常用编码)都能正常读取,这两种是单字节编码,不会出现解码失败的情况。修改你的代码试试:

    with open(csvfile, 'r', encoding='latin-1') as f:
        lines = f.readlines()
    

    如果能正常读取,再检查内容是否符合预期,没问题的话就可以用这个编码处理后续逻辑。

  • 检测文件的实际编码
    要是想精准找到文件的编码,可以用chardet库来检测。先安装库:

    pip install chardet
    

    然后运行这段代码获取编码:

    import chardet
    
    with open(csvfile, 'rb') as f:
        # 大文件可以只读取前几KB内容,节省资源
        raw_data = f.read(1024)
        result = chardet.detect(raw_data)
    
    print(f"检测到的文件编码:{result['encoding']}")
    

    拿到编码结果后,把它替换到open函数的encoding参数里就行。

  • 兜底方案:忽略或替换无效字符
    要是你不在乎个别无效字符,也可以用errors参数跳过错误。比如:

    # 直接忽略无效字符
    with open(csvfile, 'r', encoding='utf-8', errors='ignore') as f:
        lines = f.readlines()
    
    # 或者把无效字符替换成?
    with open(csvfile, 'r', encoding='utf-8', errors='replace') as f:
        lines = f.readlines()
    

    不过这个方法可能会丢失部分字符信息,建议优先用前两种方法找到正确编码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:41:54