我有一个 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"
最佳答案
我还不能发表评论,所以我发布了回复。 Python 2 的编码并不是很有趣。
Glí²ria 是数据的正确 utf-8 编码表示形式(以字节为单位)。 Gl\u00f2ria 是 unicode 字符串的 Python 2 内部表示。 json.dumps 返回一个 python unicode 字符串。您可能想要做的是将 json.dumps 的输出编码为 utf8。
import json
data = u'Gl\xf2ria'
encoded_data = json.dumps(s, ensure_ascii=False).encode("utf8")
print(encoded_data)
打印 Gloria。
编辑:只是为了确定
Glária = Gl\xc3\xb2ria。使用 print 语句打印两者都应正确显示为 Glòria。
关于python - json序列化输出重音字符不正确,python/django,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31938333/