python中的encode()和decode()函式
阿新 • • 發佈:2018-11-08
前言:
我們知道,計算機是以二進位制為單位的,也就是說計算機只識別0和1,也就是我們平時在電腦上看到的文字,只有先變成0和1,計算機才會識別它的意思。這種資料和二進位制的轉換規則就是編碼。計算機的發展中,有ASCII碼,GBK,Unicode,utf-8編碼。我們先從編碼的發展史瞭解一下編碼的進化過程。
編碼發展史
- 美國人發明了計算機,用八位0和1的組合,一一對應英文中的字元,整出了一個表格,ASCII表。
- 計算機傳入中國,中國地大物博,繁體字和簡體字多,8位位元組最多表示256個字元,滿足不了,於是對ASCII擴充套件,新表叫GB2312
- 後來發現GB2312還不夠用,擴充之後形成GB18030。
- 每個國家都像中國一樣,把自己的語言編碼,於是出現了各種各樣的編碼,如果你不安裝相應的編碼,就無法解釋相應編碼想表達的內容。
- 各自編碼無法國際交流。一個國際組織一起創造了一種編碼 UNICODE(Universal Multiple-Octet Coded Character Set) ,這種編碼非常大,大到可以容納世界上任何一個文字和標誌。所以只要電腦上有 UNICODE 這種編碼系統,無論是全球哪種文字,只需要儲存檔案的時候,儲存成 UNICODE 編碼就可以被其他電腦正常解釋。
- UNICODE 在網路傳輸中,出現了兩個標準 UTF-8 和 UTF-16,分別每次傳輸 8個位和 16個位。
- 於是就會有人產生疑問,UTF-8 既然能儲存那麼多文字、符號,為什麼國內還有這麼多使用 GBK 等編碼的人?因為 UTF-8 等編碼體積比較大,佔電腦空間比較多,如果面向的使用人群絕大部分都是中國人,用 GBK 等編碼也可以。但是目前的電腦來看,硬碟都是白菜價,電腦效能也已經足夠無視這點效能的消耗了。所以推薦所有的網頁使用統一編碼:UTF-8。utf-8既每次傳輸8位位元組,utf-16每次傳輸16位位元組。
encode()和decode()
- decode英文意思是 解碼,encode英文原意 編碼
- 字串在Python內部的表示是unicode編碼,因此,在做編碼轉換時,通常需要以unicode作為中間編碼, 即先將其他編碼的字串解碼(decode)成unicode,再從unicode編碼(encode)成另一種編碼。
- decode的作用是將其他編碼的字串轉換成unicode編碼,如str1.decode('gb2312'),表示將gb2312編碼的字串str1轉換成unicode編碼。
- encode的作用是將unicode編碼轉換成其他編碼的字串,如str2.encode('gb2312'),表示將unicode編碼的字串str2轉換成gb2312編碼。
- 總得意思:想要將其他的編碼轉換成utf-8必須先將其解碼成unicode然後重新編碼成utf-8,它是以unicode為轉換媒介的 如:s='中文' 如果是在utf8的檔案中,該字串就是utf8編碼,如果是在gb2312的檔案中,則其編碼為gb2312。這種情況下,要進行編碼轉換,都需要先用 decode方法將其轉換成unicode編碼,再使用encode方法將其轉換成其他編碼。通常,在沒有指定特定的編碼方式時,都是使用的系統預設編碼建立的程式碼檔案