问题描述
当我将文件从python导出到json文件时,它包含像这样的字符
{"-": "text","menu": {"-": "node","id": 2244676,"prev": "[2/40] \u0d2a\u0d4d\u0d30\u0d2f\u0d4b\u0d1c\u0d15 \u0d15\u0d4d\u0d30\u0d3f\u0d2f
我用过
with open('messages.json','w') as outfile:
json.dump(all_messages,outfile,cls=DateTimeEncoder)
在python中。如何将其转换为普通的unicode文本?
解决方法
如果您希望输出的JSON是人类可读的,请使用UTF-8编码和ensure_ascii=False
参数:
with open('messages.json','w',encoding='utf8') as outfile:
json.dump(all_messages,outfile,cls=DateTimeEncoder,ensure_ascii=False)
如果您只想再次读回数据,json.load
会将其转换回Unicode:
with open('messages.json') as infile:
data = json.load(infile)
带有简单字符串的示例:
>>> s = '[2/40] പ്രയോജക ക്രിയ'
>>> print(json.dumps(s))
"[2/40] \u0d2a\u0d4d\u0d30\u0d2f\u0d4b\u0d1c\u0d15 \u0d15\u0d4d\u0d30\u0d3f\u0d2f"
>>> print(json.dumps(s,ensure_ascii=False))
"[2/40] പ്രയോജക ക്രിയ"
>>> out = json.dumps(s)
>>> out
'"[2/40] \\u0d2a\\u0d4d\\u0d30\\u0d2f\\u0d4b\\u0d1c\\u0d15 \\u0d15\\u0d4d\\u0d30\\u0d3f\\u0d2f"'
>>> json.loads(out)
'[2/40] പ്രയോജക ക്രിയ'
,
如果您希望输出的JSON是人类可读的,请使用UTF-8编码和ensure_ascii=False
参数:
with open('messages.json',ensure_ascii=False)
如果您只想再次读回数据,json.load
会将其转换回Unicode:
with open('messages.json',encoding='utf8') as infile:
data = json.load(infile)