如何在JSON中保存中文字符并在Python中正常打印?
解决JSON中文读取打印乱码问题
问题根源
- JSON格式不规范:你提供的JSON内容使用了单引号,而JSON语法强制要求键和字符串必须用双引号,虽部分场景下能解析,但这是不符合标准的写法,可能引发潜在问题。
- 终端编码不匹配:打印出现
好这类乱码,本质是UTF-8编码的中文字符被终端以非UTF-8编码(比如Latin-1)解码导致的。
解决方案
步骤1:修正JSON文件格式
将JSON文件内容改为标准格式(替换所有单引号为双引号):
{"好": {"word": "好"}}
步骤2:调整Python代码确保输出编码正确
提供两种可行的代码方案:
方案1:强制标准输出使用UTF-8
import sys import json # 强制stdout输出UTF-8编码内容 sys.stdout.reconfigure(encoding='utf-8') with open('chinese_character.json', 'r', encoding="utf-8") as f: contents = json.load(f) print(contents)
方案2:使用json.dumps直接输出中文
import json with open('chinese_character.json', 'r', encoding="utf-8") as f: contents = json.load(f) # ensure_ascii=False 禁用ASCII转义,直接输出中文字符 print(json.dumps(contents, ensure_ascii=False))
步骤3:确保终端编码为UTF-8
- Windows命令提示符:执行命令
chcp 65001切换到UTF-8编码 - Linux/macOS终端:检查环境变量
LANG是否为zh_CN.UTF-8或其他UTF-8编码,若不是可执行export LANG=zh_CN.UTF-8临时设置
内容的提问来源于stack exchange,提问作者Duc Huy Nguyen Tran
相关产品推荐
相关产品推荐

