错误已经存在于传递给json.loads()的字符串中。\ u00c3是“a tilde”,而\00a9是版权标志。_的正确值是\u00e9。
该字符串可能是由发送方以UTF-8编码的,而接收方则将其解码为ISO-8859-1。
例如,如果运行以下python脚本:
# -*- encoding: utf-8 -*-
import json
data = {'name': u'André'}
print('data: {0}'.format(repr(data)))
code = json.dumps(data)
print('code: {0}'.format(repr(code)))
conv = json.loads(code)
print('conv: {0}'.format(repr(conv)))
name = conv['name']
print(u'Name is {0}'.format(name))
输出应如下所示:
data: {'name': u'Andr\xe9'}
code: '{"name": "Andr\\u00e9"}'
conv: {u'name': u'Andr\xe9'}
Name is André
在python 2.x中管理unicode有时会造成麻烦。不幸的是,Django还不支持Python3。