json 序列化输出重音字符不正确,python / django

json serialization outputting accented character incorrectly, python / django

我有一个 Django 应用程序,使用 tasypie 序列化一些数据。

有个名字

"Glòria" 

(带重音符 'o')在数据库中,但未正确序列化。在tasypie制作的json里面,出来的是

"Glòria" 

序列化程序 class 如下所示:

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 

returns 如下:

"Gl\u00f2ria"

我无法发表评论(目前..)所以我正在回复。 Python 2 对编码并不十分感兴趣。

Glòria 是以字节为单位的数据的正确 utf-8 编码表示。 Gl\u00f2ria 是 Python 2 unicode 字符串的内部表示。 json.dumps returns 一个 python unicode 字符串。您可能想要做的是将 json.dumps 的输出编码为 utf8.

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。