Python3 ---編碼問題
編碼樣式
l ASCII編碼:美國標準程式碼,將各種東西(英文字母,數字,標點,字元)換成計算機識別的二進位制數,一共265個字元,不支援漢字
l Unicode:全球所有字元的編碼,但是沒有規定的儲存方式,65----》A
l ANSI:一般跟系統語言有關係
l GBK編碼:漢字編碼,進行了擴充套件,包含生僻字,儲存編碼
l GB2312:漢字處理,比較少,儲存編碼
l UTF-8:表示把unicode編碼儲存的時候,把一個漢字或者其他字元,儲存為3個位元組
完全相容ascii碼的256個字元;
l UTF-32:儲存為4個位元組,很佔記憶體
l UTF-16:儲存為2個字元
備註:最理想的文書處理方式是用utf8儲存和傳輸,程式讀到記憶體裡面用utf32處理。
python3 位元組字串和文字字串
位元組字串和文字字串的定義:
位元組字串(bytes):二進位制資料用bytes表示,bytes表示的是一堆的位元位
文字字串(str):文字用unicode表示
2、文字字串和位元組字串的轉換
str(文字)-----(encode)------bytes(位元組)
bytes(位元組)----(decode)-----str(文字)
3、在Python3中,輸入的中文,type顯示是str型別,實際上預設是為unicode型別
它相當於在Python2中輸入的u“中國”,因此在Python3中文字是沒有decode屬性的。
4、在python3中,輸入一箇中文二步走:
1)輸入 #coding=utf-8
2)直接輸入中文就可以了
5、總結Python2和python3中的不同
s=“中國”
py2:相當於Python3中的bytes型別,所以如果想真正顯示中文,需要轉換成unicode,需要decode以下變為unicode,然
後進行列印操作,
py3:在py3中,s=“中國”為unicode型別, 此時相當於py2中的s=u“中國”直接列印就可以是中文,所以在python3中,中
文的輸入變得很簡單。
關於編輯器的預設編碼
1、在dos下,預設編碼為“gbk”
在dos下,輸入的程式碼如果是gbk或者是unicode編碼,都能夠準確的識別出來
2、在pycharm或者文字檔案中,可以預設為編碼為utf-8模式,如果需要將中文顯示出來,可以為unicode或者utf-8模式
py2中輸出中文的三部曲:
1、程式碼開頭輸入:#coding=utf-8
2、檔案儲存為utf-8編碼格式,在檔案中的中文字串需要使用u,轉換成unicode型別
3、特殊例子:raw_input("請輸入一句話".decode("utf-8").encode("gbk")),因為dos環境預設是gbk環境,所以gbk下可以識別出來
py3 中輸出中文2部曲:
1、程式碼開頭:#coding=utf-8
2、檔案儲存為utf-8編碼格式,在檔案中的中文直接輸入就可以