You need to enable JavaScript to run this app. CSV编码识别方法:Python读取ISO2022编码CSV乱码解决
优惠活动
大模型
产品
解决方案
定价
更多

CSV编码识别方法:Python读取ISO2022编码CSV乱码解决

乱码根因

你现在跑出来的带\x1b转义符的乱码,核心问题就是打开文件的时候没指定对应的解码规则。Python默认会拿当前运行环境的编码(比如Windows下默认GBK、多数Linux环境默认UTF-8)硬解ISO2022格式的日文字节,碰到编码里自带的ESC控制序列时,没法把整段编码串映射成正确的日文,只能把原始控制符原样打印出来,自然就成了现在看到的乱码状态。

修复操作
  • 对应到Python的编码标识
    你文件里带\x1b$B转义的日文版ISO2022格式,Python本身就内置了支持,对应的编码名是iso2022_jp,不需要额外安装任何第三方库。
  • 修改open()方法的调用逻辑
    不需要改动csv模块的处理流程,只要在打开文件的代码里补上encoding参数,指定和文件匹配的解码规则就行:
import csv

# 显式声明文件编码,覆盖Python的默认解码逻辑
with open('vocabulary.csv', 'r', encoding='iso2022_jp') as csv_file:
    csv_reader = csv.reader(csv_file)
    for line in csv_reader:
        print(line)
  • 效果验证
    运行修改后的代码,原来的乱码片段比如'\x1b$B0l$D\x1b(B'会被正确解码为'私'、'\x1b$B$R$H$D\x1b(B'解码为'名前',输出内容和参考截图的可读日文完全一致。
避坑提示
  • 别选相近但不匹配的日文编码:日常见的shift_jis、euc_jp虽然也是日文常用编码,但本身不带\x1b开头的ESC转义控制符,和你当前的文件格式不匹配,选错了还是会出乱码。
  • 别依赖系统默认编码做文件读取:哪怕你当前机器的默认编码刚好能正常打开文件,换个运行环境大概率就会复现乱码,显式传入encoding参数是最稳妥的写法。
  • 如果用iso2022_jp读取时碰到个别字符解码报错,可以换同系列的细分编码iso2022_jp_2尝试,部分带全角标点的ISO2022格式CSV文件会用到这个编码变体。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.10 07:54:04