python3的str和bytes
阿新 • • 發佈:2018-11-08
python3的str和bytes
簡介
python 3與python 2的一個區別就是對文字和二進位制資料作了更為清晰的區分。文字總是Unicode,由str型別表示,二進位制資料則由bytes型別表示。python 3不會以任意隱式的方式混用str和bytes,正是這使得兩者的區別特別清晰。在python 2中你可以拼接字串和位元組包,但是在python 3中你不能拼接字串和位元組包,也無法在位元組包裡搜尋字串(反之亦然),也不能將字串傳入引數為位元組包的函式(反之亦然)。在python 3的websocket通訊中不管傳輸的是文字型別還是其它型別都會轉換成二進位制資料進行傳輸。
字串可以編碼成位元組包,而位元組包可以解碼成字串
>>> ‘€20’.encode(‘utf-8’) #編碼
b’\xe2\x82\xac20’
>>> b’\xe2\x82\xac20’.decode(‘utf-8’) #解碼
‘€20’
無論是編碼還是解碼都必須指定原來的編碼格式。
python 3預設編碼解碼格式utf-8
msg=“我愛你”
print(msg)
print(msg.encode(‘utf-8’))
print(msg.encode().decode())
結果:
我愛你
b’\xe6\x88\x91\xe7\x88\xb1\xe4\xbd\xa0’
我愛你