demo1
Ubuntu16,Python2,且安裝過中文語言什么的。
#!usr/bin/python
# -*- coding: utf-8 -*-
a = "我就是中文啊"
print("a:",a)1234
# -*- 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和Python3的輸出真的不是一樣的哎!
Python2中的print加了括號之后,前面有字符串,再加逗號,再加帶有中文的字符串變量就是會亂碼!
這種組合就是不行,所以只能打破這種組合,比如說下面這種:
#!usr/bin/python
# -*- coding: utf-8 -*-
a = "我就是中文啊"
print a1234
# -*- 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
# -*- coding: utf-8 -*-
a = "我就是中文啊"
print "a:%s"%a
#這里的操作應該是Python2的正常print了,可惜我一直都用了();
#自以為這樣,不管是Python2還是python3都可以處理print函數
#至於%s的意思大家應該清楚,簡單解釋一下,%類似於取地址,s是string,字符串的意思。和c里面的輸出原理類似。1234567
這里的輸出如下:
a:我就是中文啊
12
12
美滋滋,Ubuntu下是可以解決這樣的問題了。
Windows下的情況還是不一樣的!
Windows下cmd中python2正確print輸出帶有漢字的字符串變量
題目起的有點長:
剛開始我在Windows下操作的時候,不管怎么都無法顯示中文,就連上面最后一個demo都無法顯示。
百度到的答案是,Windows中cmd的自帶編碼格式不支持utf-8,得在cmd中輸入 cp65001,然后我就可以輸入下面的代碼,得到再下面的輸出了:
剛開始我在Windows下操作的時候,不管怎么都無法顯示中文,就連上面最后一個demo都無法顯示。
百度到的答案是,Windows中cmd的自帶編碼格式不支持utf-8,得在cmd中輸入 cp65001,然后我就可以輸入下面的代碼,得到再下面的輸出了:
#!usr/bin/python
# -*- coding: utf-8 -*-
a = "我就是中文啊"
print "a:%s"%a1234
# -*- coding: utf-8 -*-
a = "我就是中文啊"
print "a:%s"%a1234
這時候的輸出才是正常的:
a:我就是中文啊1
也可以試試下面的操作:
先把cmd設置成cp936,對就是在cmd中輸出cp936,然后cmd會支持gbk格式。
先把cmd設置成cp936,對就是在cmd中輸出cp936,然后cmd會支持gbk格式。
a = "我就是中文啊"
print a.decode('utf-8').encode('GBK')12
print a.decode('utf-8').encode('GBK')12
這里的輸出就很明顯了,會直接顯示中文
我就是中文啊1
現在發現了最終的奧妙,也就是——如果字符串中有漢字,那么,python2不能加括號!
原文: https://blog.csdn.net/hehedadaq/article/details/81782532
原文: https://blog.csdn.net/hehedadaq/article/details/81782532