当python加载json时,如何将str转换为unicode,这样我可以打印中文字符?

时间:2015-06-13 09:34:00

标签: python json unicode encoding

我有一个像这样的json文件:

{
    'errNum': 0,    
    'retData': {
    'city': "武汉"
    }
}

import json 
content = json.loads(result) # supposing json file named result
cityname = content['retData']['city'] 
print cityname

之后,我得到了一个输出:\u6b66\u6c49 我知道它是武汉的汉字的unicode,但它的类型是str isinstance(cityname,str)是真的。 那么如何将此str转换为unicode并输出为武汉

我也试过这些解决方案:

>>> u'\u6b66\u6c49'
u'\u6b66\u6c49'
>>> print u'\u6b66\u6c49'
武汉
>>> print '\u6b66\u6c49'.decode()
\u6b66\u6c49
>>> print '\u6b66\u6c49'
\u6b66\u6c49

搜索了一些关于ascii,unicode和utf-8的内容,编码和解码,但也无法理解,这很疯狂! 我需要一些帮助,谢谢!

2 个答案:

答案 0 :(得分:1)

也许这个答案已经晚了五年,但由于我在构建日语预处理器时遇到了类似的问题,因此我找到了答案。

当您 loadsresultcontent 添加以下标志:

content = json.loads(result, ensure_ascii=False)

这解决了我的问题。

答案 1 :(得分:-2)

您的json包含转义的unicode字符。您可以使用unicode_escape编解码器将它们解码为实际的unicode字符:

print cityname.decode('unicode_escape')

请注意,虽然这通常有效,但根据unicode转义的来源,您可能会遇到基本多语言平面之外的字符(U + 0到U + FFFF)的问题。用户@bobince的一个方便的引用,我从评论中获取:

  

请注意......有许多不同的格式使用\ u   escapes - Python unicode文字(unicode-escape句柄),Java   属性,JavaScript字符串文字,JSON等。它是   重要的是知道你正在处理哪一个,因为他们都有   关于其他逃逸有效的规则略有不同。   unicode-escape可能是也可能不是解析该数据的有效方法   取决于它来自何处。