我有一个Django应用程序,使用tasypie序列化一些数据。
有一个名字
"Glòria"
数据库中的(带有重音“o”),但未正确序列化。在tasypie制作的json中,它出现了
"Glòria"
序列化程序类如下所示:
import json as simplejson
class PrettyJSONSerializer(Serializer):
json_indent = 2
def to_json(self, data, options=None):
options = options or {}
data = self.to_simple(data, options)
return simplejson.dumps(data, cls=json.DjangoJSONEncoder,
sort_keys=True, ensure_ascii=False, indent=self.json_indent)
将simplejson.dumps上的属性更改为
ensure_ascii=True
返回以下内容:
"Gl\u00f2ria"
答案 0 :(得分:3)
我无法发表评论(但是......)所以我发帖回复。 Python 2对于编码并不是很有趣。
Glüria是数据的正确utf-8编码表示,以字节为单位。 Gl \ u00f2ria是Unicode 2内部表示的unicode字符串。 json.dumps返回一个python unicode字符串。您可能想要做的是在utf8中编码json.dumps的输出。
import json
data = u'Gl\xf2ria'
encoded_data = json.dumps(s, ensure_ascii=False).encode("utf8")
print(encoded_data)
打印Glòria。
编辑:只是为了确保
Glòria= Gl \ xc3 \ xb2ria。使用print语句打印时,两者都应正确显示为Glòria。