python3的decode()與encode()
Tags: Python Python3
對於從python2.7過來的人,對python3的感受就是python3對文本以及二進制數據做了比較清晰的區分。文本總是Unicode
,由str
類型進行表示,二進制數據使用bytes
進行表示,不會將str
與bytes
偷偷的混在一起,使得兩者的區別更加明顯。在python2
中會明顯發現不能將str
與bytes
拼接在一起,也不能在bytes
中查找字符。
然而在實際應用中經常需要對兩者進行轉換操作以便后續的代碼能夠順利跑完。兩者之間的關如下所示:
str->bytes:encode編碼
bytes->str:decode解碼
字符串通過編碼成為字節碼,字節碼通過解碼成為字符串。
>>> text = '我是文本'
>>> text
'我是文本'
>>> print(text)
我是文本
>>> bytesText = text.encode()
>>> bytesText
b'\xe6\x88\x91\xe6\x98\xaf\xe6\x96\x87\xe6\x9c\xac'
>>> print(bytesText)
b'\xe6\x88\x91\xe6\x98\xaf\xe6\x96\x87\xe6\x9c\xac'
>>> type(text)
<class 'str'>
>>> type(bytesText)
<class 'bytes'>
>>> textDecode = bytesText.decode()
>>> textDecode
'我是文本'
>>> print(textDecode)
我是文本
對於這些可以這么理解:
編碼就是將字符串轉換成字節碼,涉及到字符串的內部表示。
解碼就是將字節碼轉換為字符串,將比特位顯示成字符。
其中decode()
與encode()
方法可以接受參數,其聲明分別為:
bytes.decode(encoding="utf-8", errors="strict")
str.encode(encoding="utf-8", errors="strict")
其中的encoding
是指在解碼編碼過程中使用的編碼(此處指“編碼方案”是名詞),errors
是指錯誤的處理方案。
詳細的可以參照官方文檔:
str.encode()
bytes.decode()