无法输出包含重音的json编码的dict(内部noob)

时间:2010-05-01 13:46:48

标签: python json utf-8

这是一个相当简单的例子,它让我疯了几天。考虑以下脚本:

# -*- 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"}

我不明白为什么他们两个字符串之间存在这样的差异。 我一直在尝试各种编码,解码等,但我似乎无法找到正确的方法来做到这一点。有人有想法吗?

提前致谢。 马修

2 个答案:

答案 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