如何解决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
相关产品推荐
相关产品推荐

