这是一个相当简单的例子,它让我疯了几天。考虑以下脚本:
# -*- coding: utf-8 -*
from json import dumps as json_dumps
machaine = u"une personne émérite"
print(machaine)
output = {}
output[1] = machaine
jsonoutput = json_dumps(output)
print(jsonoutput)
cli的结果:
une personne émérite
{"1": "une personne \u00e9m\u00e9rite"}
我不明白为什么他们两个字符串之间存在这样的差异。 我一直在尝试各种编码,解码等,但我似乎无法找到正确的方法来做到这一点。有人有想法吗?
提前致谢。 马修
答案 0 :(得分:3)
编码是正确的。将其重新装入并打印,您将看到正确的输出:
>>> import json
>>> jsoninput = json.loads(jsonoutput)
>>> print jsoninput
{u'1': u'une personne \xe9m\xe9rite'}
>>> print jsoninput['1']
une personne émérite
答案 1 :(得分:2)
澄清Marcelo Cantos的答案:json.dumps()
返回JSON编码,这是一个 ASCII 字符串,以字符“{”开头,包含反斜杠,引号等。必须解码它(例如用json.loads()
来获取带有数据的实际字典。
# -*- coding: utf-8 -*
import json
output = {1: u"une personne émérite"}
print output[1]
json_encoded = json.dumps(output)
print "Encoded: %s" % repr(json_encoded)
input = json.loads(json_encoded)
print input['1']
输出:
une personne émérite
Encoded: '{"1": "une personne \\u00e9m\\u00e9rite"}'
une personne émérite