json.dumps \u 将 unicode 转义为 utf8

2024-03-12

我来自这个老讨论 https://stackoverflow.com/questions/18337407/saving-utf-8-texts-in-json-dumps-as-utf8-not-as-u-escape-sequence,但该解决方案并没有多大帮助,因为我的原始数据的编码方式不同:

我的原始数据已经编码为unicode,我需要输出为UTF-8

data={"content":u"\u4f60\u597d"}

当我尝试转换为 utf 时:

json.dumps(data, indent=1, ensure_ascii=False).encode("utf8")

我得到的输出是"content": "ä½ å¥½"预期的输出应该是"content": "你好"

我试过没有ensure_ascii=false并且输出变得简单的未转义"content": "\u4f60\u597d"

如何将之前 \u 转义的 json 转换为 UTF-8?


You haveUTF-8 JSON 数据:

>>> import json
>>> data = {'content': u'\u4f60\u597d'}
>>> json.dumps(data, indent=1, ensure_ascii=False)
u'{\n "content": "\u4f60\u597d"\n}'
>>> json.dumps(data, indent=1, ensure_ascii=False).encode('utf8')
'{\n "content": "\xe4\xbd\xa0\xe5\xa5\xbd"\n}'
>>> print json.dumps(data, indent=1, ensure_ascii=False).encode('utf8')
{
 "content": "你好"
}

我的终端刚刚happens配置为处理 UTF-8,因此将 UTF-8 字节打印到我的终端会产生所需的输出。

但是,如果您的终端是not设置这样的输出,这是你的terminal然后显示“错误”字符:

>>> print json.dumps(data, indent=1,  ensure_ascii=False).encode('utf8').decode('latin1')
{
 "content": "你好"
}

请注意我如何decoded将数据转换为 Latin-1 以故意误读 UTF-8 字节。

这不是一个 Python 问题;而是一个问题。这是您在用来读取这些字节的任何工具中如何处理 UTF-8 字节的问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

json.dumps \u 将 unicode 转义为 utf8 的相关文章

随机推荐