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等常用編碼格式,了解一下他們的區別和編碼原理。