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

Python3 編碼問題

python3中encode和decode跟python2還是有一定的區別的,在python3中: 

  encode(編碼):按照某種規則將“文字”轉換為“位元組流”。  python 3中表示:unicode變成str

   decode(解碼):將“位元組流”按照某種規則轉換成“文字”。   python3中表示:str變成unicode

字串在Python內部的表示是Unicode編碼,因此在做編碼轉換時,通常需要以Unicode作為中間編碼,即先將其他編碼的字串解碼(decode)成Unicode,再從Unicode編碼(encode)成另一種編碼。

  u代表Unicode型別,s代表str型別

  u.encode('...'):只要你填寫了正確的編碼,基本上總是能成功的。就像任何檔案都可以壓縮成zip檔案。

  u.decode('...'):沒有任何意義,因為decode是將str轉為unicode編碼,而u本身就是unicode編碼的。

  s.encode('...'):在python 3中,將產生一個編碼後的byte型別的字串(這裡有點像Python 2.x中的str),byte型別的字串是支援解碼操作的。

  s.decode('...'):執行都會出錯。因為python 3中的str型別物件有點像Python 2中的unicode, 而decode是將str轉為unicode編碼,所以str僅有一個encode方法,呼叫這個方法後將產生一個編碼後的byte型別的字元。

按照上述規則對一般的字元編碼解碼可以基本解決,同時如果還有一些困惑可以百科一下Unicode,gbk等常用編碼格式,瞭解一下他們的區別和編碼原理。