擅长:python、mysql、java
<p>您有</em>UTF-8 JSON数据:</p>
<pre><code>>>> 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": "你好"
}
</code></pre>
<p>我的终端刚好<em>碰巧</em>被配置为处理UTF-8,因此将UTF-8字节打印到我的终端产生了所需的输出。</p>
<p>但是,如果您的终端设置为<em>而不是</em>,则显示“错误”字符的是您的<em>终端</em>:</p>
<pre><code>>>> print json.dumps(data, indent=1, ensure_ascii=False).encode('utf8').decode('latin1')
{
"content": "ä½ å¥½"
}
</code></pre>
<p>注意我如何将数据解码成拉丁语1,故意误读UTF-8字节。</p>
<p>这不是一个Python问题;这是一个关于如何使用任何工具读取这些字节来处理UTF-8字节的问题。</p>