我来自这个老讨论 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(使用前将#替换为@)