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

标签 python django serialization unicode tastypie

我有一个 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/

相关文章:

python - 尝试使用未初始化的值: Tensorflow

django - Python/Django : TypeError : __str__ returned non-string (type UUID)

python - 整数超出范围

java - 将对象反序列化到 PC 文件系统并用作资源?

visual-c++ - Visual C++ (.NET 4.0) - 将自定义结构序列化/复制到字节数组以通过 NetworkStream 发送

Python Data Scraping - 提取表中存在标签 '<td>' 的行

python - 是否可以在阻塞并可能回调 Python 的 C 函数之前释放 GIL?

android - 如何使用对象键作为 id 序列化 JSON?

python - 根据另一个矩阵中的值移动一个矩阵中的值的有效方法

javascript - TemplateSyntaxError 无法解析其余部分