Python中如何使JSON输出正确显示重音字符?
解决Python写入JSON时重音字符转义的问题
嘿,作为Python新手遇到这个问题太正常了,我来帮你搞定!你的问题核心是json.dump()默认会把非ASCII字符(比如葡萄牙语的重音字符)转义成\u开头的序列,再加上文件编码的小细节没处理到位,才导致字符没法正常显示。
你只需要修改两个关键地方就能解决问题:
- 打开文件时指定UTF-8编码
- 给
json.dump()添加ensure_ascii=False参数
完整修改后的代码
#!/usr/bin/env python # -*- coding: utf-8 -*- import json # 假设你的new_dict已经处理完成,包含带重音的目标字符 new_dict = {"bag": "saco", "balloon": "balão", "apple": "maçã"} # 打开文件时指定编码,同时关闭JSON的ASCII转义 with open('myFile.json', 'w+', encoding='utf-8') as fp: json.dump(new_dict, fp, ensure_ascii=False, indent=4)
各参数的作用
encoding='utf-8':确保文件以UTF-8编码写入,这是支持多语言特殊字符的标准编码,能完美保存重音字符。ensure_ascii=False:关闭JSON模块默认的ASCII转义行为,让非ASCII字符直接以原始形式写入文件,而不是转成\u00e3这类序列。indent=4:可选参数,用来格式化JSON文件的结构,让内容更清晰易读,不影响字符显示的核心功能。
验证读取结果
之后读取这个JSON文件时,记得同样指定UTF-8编码,避免出现乱码:
with open('myFile.json', 'r', encoding='utf-8') as fp: loaded_data = json.load(fp) print(loaded_data) # 输出会是:{'bag': 'saco', 'balloon': 'balão', 'apple': 'maçã'}
这样修改后,你的JSON文件里就能直接看到正常显示的重音字符啦!
内容的提问来源于stack exchange,提问作者Cesare
相关产品推荐
相关产品推荐

