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

Python中JSON读取编码参数未生效?UnicodeEncodeError问题咨询

解决UnicodeEncodeError:不是读取编码被忽略,是输出编码的问题!

兄弟,你这个报错的根源不是utf-8-sig编码参数被忽略,而是发生在打印输出的环节!仔细看错误栈:UnicodeEncodeError是在print(k,v)这一行触发的,和json.load读取文件的步骤完全没关系。

为什么会这样?

你用utf-8-sig读取JSON文件时,已经正确把文件里的字节解码成Unicode字符串了。但你的终端(或者Python运行的输出环境)默认使用的是ASCII编码,当你试图打印包含非ASCII字符(比如\xb0,这是咱们常用的「度」符号°)的内容时,ASCII编码无法处理这些字符,就抛出了这个错误。

几种快速解决方法:

  • 方法1:强制Python标准输出使用UTF-8
    在代码最开头加上这两行,直接修改stdout的编码配置:

    import sys
    sys.stdout.reconfigure(encoding='utf-8')
    

    这样后续所有print操作都会用UTF-8编码输出,特殊字符就能正常显示了。

  • 方法2:临时调整终端编码(针对Windows CMD)
    如果是在Windows的命令提示符里运行代码,先执行这条命令切换终端编码为UTF-8:

    chcp 65001
    

    然后再运行你的Python脚本,一般就能正常打印了。

  • 方法3:打印时显式处理字符
    把print(k,v)改成显式编码后输出的形式,不过这种方法比较繁琐,不如前两种高效:

    print(k.encode('utf-8').decode('utf-8'), v.encode('utf-8').decode('utf-8'))
    

再确认一下读取环节的正确性:

你提到文件对象是<class '_io.TextIOWrapper'>,这说明open函数已经以文本模式打开了文件,encoding="utf-8-sig"参数确实生效了——读取过程完全没问题,别被错误信息误导啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:23:43