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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM