1. 程式人生 > 實用技巧 >python encode和decode的區別

python encode和decode的區別

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

decode的作用是將其他編碼的字串轉換成unicode編碼,如str1.decode('gb2312'),表示將gb2312編碼的字串str1轉換成unicode編碼。

encode的作用是將unicode編碼轉換成其他編碼的字串,如str2.encode('gb2312'),表示將unicode編碼的字串str2轉換成gb2312編碼。

如下程式碼示例:

#coding=utf-8
def code(): s = '中文' print(s) # 中文 str1 = s.encode("gbk") # 將unicode的編碼轉化成gbk的編碼,獲得bytes型別物件 print(str1, type(str1)) # b'\xd6\xd0\xce\xc4' <class 'bytes'> str2 = str1.decode('gbk') # 將gbk解碼成unicode的字串,獲得字串型別 print(str2, type(str2)) # 中文 <class 'str'> print
(isinstance(str2, str)) # True str3 = s.encode('utf-8') # 將unicode編碼成utf-8的字串,獲得bytes型別物件 print(str3, type(str3)) # b'\xe4\xb8\xad\xe6\x96\x87' <class 'bytes'> str4 = str3.decode('utf-8') # 將utf-8解碼成unicode的字串,獲得字串型別 print(str4, type(str4)) # 中文 <class 'str'> if __name__
== '__main__': code()

在python3中,被引號框起來的字串,是使用unicode編碼的。也就是說unicode型別在python3中沒有了,python3中的str就相當於python2中的unicode。