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

如何解决Python加载含Unicode的JSON文件时的UnicodeEncodeError?

解决UnicodeEncodeError: 'charmap' codec无法编码字符的问题

嘿,我发现你的问题其实不是出在加载JSON文件的环节——你用encoding="utf8"读取文件是完全没问题的,真正的问题出在print输出到控制台这一步!

看报错信息里的cp1252.py,说明你的Windows控制台默认使用的是cp1252编码,而这个编码并不包含♯(也就是\u266f)这个字符。当Python尝试把内存里的Unicode数据转换成控制台支持的编码时,找不到对应字符的映射,就抛出了这个错误。

给你几个实用的解决方案:

方案1:强制修改Python标准输出的编码

在代码开头加上两行配置,让stdout强制使用UTF-8编码输出:

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

import json
data = json.load(open("data.json", encoding="utf8"))
print(data)

这样print就能正常输出包含特殊Unicode字符的内容了。

方案2:切换控制台编码(Windows专属)

在运行Python脚本之前,先在命令行里执行这条命令,把控制台编码切换为UTF-8:

chcp 65001

之后再运行你的test.py,控制台就能支持显示更多Unicode字符了。

方案3:写入文件代替控制台输出

如果只是需要查看完整的数据内容,直接写入UTF-8编码的文件会更稳妥,完全不受控制台编码限制:

import json
# 加载JSON文件
with open("data.json", encoding="utf8") as f:
    data = json.load(f)
# 写入到输出文件,确保保留所有Unicode字符
with open("output_data.json", "w", encoding="utf8") as f:
    json.dump(data, f, ensure_ascii=False, indent=2)

打开生成的output_data.json就能看到完整的、包含所有特殊字符的内容了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 10:28:11