python--編碼與解碼
阿新 • • 發佈:2020-09-04
背景
- 在使用python過程中,經常會遇到這種進位制資料
b'\xe4\xb8\xad\xe6\x96\x87'
,看起來會一頭霧水 - 本篇部落格介紹python如何處理這些編碼
編碼
- 計算機資訊的表示方式只有0,1
- 將影象,語言文字,音視訊等轉換成二進位制儲存在計算機,稱為編碼
- 將0,1組合並賦予不同的含義,且賦予不同的儲存空間的方式又稱為編碼標準
- 不同國家因語言不同,有不同的編碼標準
- Unicode 為國際統一編碼,即將世界所有字元都分配了一個唯一的數字編號
- 主流的編碼標準還有 ASCII、GB2312、GBK、GB18030, GB2312、GBK、GB18030 為漢字字元編碼方案的國家標準。
預設編碼
- python2預設編碼為 ASCII,python3預設編碼為 UTF-8
- windows預設編碼為 GBK,linux預設編碼為 UTF-8
- windows在儲存和讀取檔案均使用 GBK編碼,可以在儲存檔案時指定編碼 encoding='utf-8'
python編碼轉換
- 中間碼: 通常用unicode作為中間編碼,先將其他編碼的字串解碼(decode)成unicode,再從unicode編碼(encode)成另一種編碼格式
- 編碼(encode): 將unicode的字串轉換成二進位制資料的過程和規則
- 解碼(decode): 將二進位制資料轉換為對應的Unicode字串
encode:str --> bytes
decode:bytes --> str
s = '中國'
print(s.encode('utf-8'))
print(s.encode('utf-8').decode('utf-8'))
>>>
b'\xe4\xb8\xad\xe5\x9b\xbd'
中國
總結
- decode實質是把二進位制資料(bytes)轉化成人看的懂得英文或者漢字
- python3預設編碼為 UTF-8