從某種意義上說,Python中只有兩種數據類型:str和bytes。
從str轉換成bytes,稱為編碼
從bytes轉換為str,稱為解碼
str是以Unicode方式編碼的
byte可以以utf8或者gbk等形式編碼
一、str轉bytes(編碼)
方法一:通過bytes()方法
s = 'hello世界' b = bytes(s, 'utf8')
在utf8中,一個漢字占三個字節
print(b) # b是utf8編碼的bytes
上邊代碼執行結果如圖:
方法二:通過str的內置函數encode()
b2 = s.encode('utf8') print(b2)
二、bytes轉str(解碼)
方法一:用str()方法
s = str(b2, 'gbk') print(s) # 會出現漢字亂碼
亂碼原因:
b2是用utf8編碼成bytes的,必須用utf8解碼成str
str數據類型沒有編碼規則,是Unicode(萬國碼)
方法二:用bytes的內置函數decode()
s2 = b2.decode('utf8') print(s2)
用什么格式編碼,就要用什么格式解碼