1. 程式人生 > >Python2中print字串含有漢字無法正常顯示

Python2中print字串含有漢字無法正常顯示

demo1 Ubuntu16,Python2,且安裝過中文語言什麼的。   #!usr/bin/python
# -*- coding: utf-8 -*-
a = "我就是中文啊"
print("a:",a)1234 輸出就是:   ('a:', '\xe6\x88\x91\xe5\xb0\xb1\xe6\x98\xaf\xe4\xb8\xad\xe6\x96\x87\xe5\x95\x8a')1 各種嘗試,encode和decode,都不行!咦,為啥呢?
後來才知道,Python2和Python3的輸出真的不是一樣的哎! Python2中的print加了括號之後,前面有字串,再加逗號,再加帶有中文的字串變數就是會亂碼! 這種組合就是不行,所以只能打破這種組合,比如說下面這種:   #!usr/bin/python
# -*- coding: utf-8 -*-
a = "我就是中文啊"
print a1234 輸出:
可以看出來,沒有問題 可見並不是Ubuntu的終端不能正確顯示中文的問題,而是我的操作不對,但是上面的操作很明顯不能滿足我的所有要求,我的字串變數應該要和字串的說明一起出現,才比較方便觀看。
我們來看看接下來的操作:   #!usr/bin/python
# -*- coding: utf-8 -*-
a = "我就是中文啊"
print "a:%s"%a
#這裡的操作應該是Python2的正常print了,可惜我一直都用了();
#自以為這樣,不管是Python2還是python3都可以處理print函式
#至於%s的意思大家應該清楚,簡單解釋一下,%類似於取地址,s是string,字串的意思。和c裡面的輸出原理類似。1234567 這裡的輸出如下:   a:我就是中文啊
12 美滋滋,Ubuntu下是可以解決這樣的問題了。 Windows下的情況還是不一樣的!   Windows下cmd中python2正確print輸出帶有漢字的字串變數 題目起的有點長:
剛開始我在Windows下操作的時候,不管怎麼都無法顯示中文,就連上面最後一個demo都無法顯示。
百度到的答案是,Windows中cmd的自帶編碼格式不支援utf-8,得在cmd中輸入 cp65001,然後我就可以輸入下面的程式碼,得到再下面的輸出了:   #!usr/bin/python
# -*- coding: utf-8 -*-
a = "我就是中文啊"
print "a:%s"%a1234 這時候的輸出才是正常的:   a:我就是中文啊1 也可以試試下面的操作:
先把cmd設定成cp936,對就是在cmd中輸出cp936,然後cmd會支援gbk格式。   a = "我就是中文啊"
print a.decode('utf-8').encode('GBK')12 這裡的輸出就很明顯了,會直接顯示中文   我就是中文啊1 現在發現了最終的奧妙,也就是——如果字串中有漢字,那麼,python2不能加括號!

原文:
https://blog.csdn.net/hehedadaq/article/details/81782532