简体   繁体   中英

when python loads json,how to convert str to unicode ,so I can print Chinese characters?

I got a json file like this:

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

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

After that, I got a output : \武\汉 I know it's unicode of Chinese character of武汉,but the type of it is str isinstance(cityname,str) is True. so how can I convert this str to unicode and output will be武汉

I also have tried these solutions:

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

Searched something about ascii,unicode and utf-8 ,encode and decode ,but also cannot understand,it is crazy! I need some help ,Thanks !

Perhaps this answer comes five years too late, but since I had a similar issue that I was trying to solve, while building a preprocessor for the Japanese language, here is the answer I found.

when you loads the result to content add the following flag:

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

This fixed my issue.

Your json contains escaped unicode characters. You can decode them into actual unicode characters using the unicode_escape codec:

print cityname.decode('unicode_escape')

Note that, while this will usually work, depending on the source of the unicode escaping you could have problems with characters outside the Basic Multilingual Plane (U+0 to U+FFFF). A convenient quote from user @bobince that I took from a comment:

Note that ... there are a number of different formats that use \\u escapes - Python unicode literals (which unicode-escape handles), Java properties, JavaScript string literals, JSON, and so on. It is important to know which one you are dealing with because they all have slightly different rules about what other escapes are valid. unicode-escape may or may not be a valid way of parsing that data depending on where it comes from.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM