如何将带有特殊字符的json打印为“à”或“ç”?
我可以这样打印:
import json
weird_dict ={"person": "ç", "á": 'à', "ç": 'ã'}
print json.dumps(weird_dict, indent=4, sort_keys=True)
output:
{
"person": "\u00e7",
"\u00e1": "\u00e0",
"\u00e7": "\u00e3"
}
如果我使用'ensure_ascii = False'
weird_dict={"person": "ç", "á": 'à', "ç": 'ã'}
print json.dumps(weird_dict, indent=4, sort_keys=True, ensure_ascii=False)
output:
{
"person": "ç",
"á": "à ",
"ç": "ã"
}
如何使用json克服特殊字符问题?我需要渲染当我使用pystache并尝试打印pystache.render('嗨{{person}}!',weird_dict)它发生在我身上:
"'ascii' codec can't decode byte 0xc3 in position 4770: ordinal not in range(128)"
答案 0 :(得分:10)
指定ensure_ascii=False
参数:
>>> import json
>>>
>>> d = {"person": "ç", "á": 'à', "ç": 'ã'}
>>> print json.dumps(d, indent=4, sort_keys=True, ensure_ascii=False)
{
"person": "ç",
"á": "à",
"ç": "ã"
}
如果ensure_ascii为True(默认值),则为所有非ASCII字符 输出使用\ uXXXX序列进行转义,结果为str 实例仅由ASCII字符组成。如果ensure_ascii是 错误,写入fp的一些块可能是unicode实例。这个 通常是因为输入包含unicode字符串或 使用编码参数。除非fp.write()明确理解 unicode(如在codecs.getwriter()中)这可能会导致错误。