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

Python处理CSV文件特殊字符乱码 正确转换编码格式方案

编码乱码修复方案

问题现象

CSV文件中存储的德文字符串出现乱码,错误字符串示例:

string = 'übung Überprüfung'

目标转换结果:

'übung Überprüfung'

当前使用cp1252转码的代码运行后首字符出现替换符�,输出为�bung Überprüfung,无法得到正确结果。

错误原因

这类乱码是典型的UTF-8字节流被错误按单字节编码解码导致的。之前的转码逻辑用cp1252做编码转换存在缺陷:cp1252字符集没有覆盖0x80-0x9F区间的所有单字节映射,部分字节在encode阶段就会被替换为无效字符,后续再解码也无法恢复。
你遇到的首字符丢失问题,就是因为ü的UTF-8编码首字节在cp1252中无对应字符,提前被替换成了�,原始字节信息已经丢失。

可行解决方法

  • 源头修复(优先选择,无字符丢失风险)
    乱码的根源是读取CSV时用了错误的默认编码,直接在读取文件时指定正确编码即可彻底解决问题:
    import csv
    
    # 普通UTF-8编码CSV用这个
    with open('你的文件路径.csv', 'r', encoding='utf-8') as f:
        csv_data = list(csv.reader(f))
    
    # 如果是Windows导出带BOM头的UTF-8文件,换成encoding='utf-8-sig'
    
  • 已损坏字符串修复(适用于无法重新读取源文件的场景)
    转码时不要用cp1252,换成latin-1(ISO-8859-1)编码做中间转换——latin-1是完整覆盖0-255所有单字节的编码,不会在encode阶段丢失字节信息:
    string = 'übung Überprüfung'
    fixed_str = string.encode('latin-1').decode('utf-8')
    print(fixed_str)
    # 输出结果:übung Überprüfung
    

    注意:如果你的字符串里已经出现了�字符,说明对应位置的原始字节在之前的读取环节已经被丢弃,没有办法通过转码恢复,必须回到文件读取环节修改编码配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 01:06:29