1. 程式人生 > >Python3 ---編碼問題

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編碼格式,在檔案中的中文直接輸入就可以