在python 下面一個包含中文字符串的列表(list)或字典麻汰,直接使用print會出現(xiàn)以下的結(jié)果:
dict = {"asdf": "我們的python學(xué)習(xí)"}
print dict
{'asdf': '\xe6\x88\x91\xe4\xbb\xac\xe7\x9a\x84python\xe5\xad\xa6\xe4\xb9\xa0'}
在輸出處理好的數(shù)據(jù)結(jié)構(gòu)的時候很不方便高氮,需要使用以下方法進(jìn)行輸出:
import json
print json.dumps(dict, encoding="UTF-8", ensure_ascii=False)
{"asdf": "我們的python學(xué)習(xí)"}
注意上面的兩個參數(shù)
還有如下例子:
>>> li=['sd','你好']
>>> print li
['sd', '\xe4\xbd\xa0\xe5\xa5\xbd']
>>> li[1].decode('gbk')
u'\u6d63\u72b2\u30bd'
>>> li[1].decode('utf-8')
u'\u4f60\u597d'
>>> unicode(li[1],'gbk')
u'\u6d63\u72b2\u30bd'
>>> li[1].decode('gb2312')
Traceback (most recent call last):
? File "", line 1, in
UnicodeDecodeError: 'gb2312' codec can't decode bytes in position 2-3: illegal multibyte sequence
解釋:
>>> li=['sd','你好']?
... print li
['sd', '\xe4\xbd\xa0\xe5\xa5\xbd']
>>> print li[1]
你好
>>>
輸出十六進(jìn)制數(shù)不是亂碼:
不是亂碼啊彼哼,這是 unicode 字符串在內(nèi)存中的形式迹淌,python 在命令行界面輸出的數(shù)據(jù)河绽,如果不是ASCII碼,則會以十六進(jìn)制形式輸出唉窃。需要比較中文的話耙饰,直接比較即可。
假如你將 li 寫入一個文件 a.txt纹份,你用筆記本打開 a.txt 時就可以看到正常的中文苟跪。