1. 程式人生 > >python的encode和decode誤讀總結

python的encode和decode誤讀總結

解析 font 計算機 理解 文本 str 無符號 出現 c中

python的encode和decode誤讀總結



最近在學Python,對編碼有個誤解的地方

下面是錯誤的理解:

encode():編碼,將對象的編碼轉換為指定編碼格式,按照字面理解,一直以為是其他編碼格式轉換成unicode格式編碼

decode():解碼,是編碼的逆過程。解析破譯,把Unicode格式轉換成其他格式。


查看一些資料和其他大神的博客,才有了正確認知和理解

decode的作用是將其他編碼的字符串轉換成Unicode編碼,如str1.decode('gb2312'),表示將gb2312編碼的字符串str1轉換成Unicode編碼。

encode的作用是將unicode編碼轉換成其他編碼的字符串,如str2.encode('gb2312'),表示將Unicode編碼的字符串str2轉換成gb2312編碼。


python是個容易出現編碼問題的語言。所以,我按照我的理解寫下下面這些文字。

首先,要了解幾個概念。

*字節:計算機數據的表示。8位二進制。可以表示無符號整數:0-255。下文,用“字節流”表示“字節”組成的串。

*字符:英文字符“abc”,或者中文字符“你我他”。字符本身不知道如何在計算機中保存。下文中,會避免使用“字符串”這個詞,而用“文本”來表

示“字符”組成的串。

*編碼(動詞):按照某種規則(這個規則稱為:編碼(名詞))將“文本”轉換為“字節流”。(在python中:unicode變成str)

*解碼(動詞):將“字節流”按照某種規則轉換成“文本”。(在python中:str變成unicode)

**實際上,任何東西在計算機中表示,都需要編碼。例如,視頻要編碼然後保存在文件中,播放的時候需要解碼才能觀看。

unicode:unicode定義了,一個“字符”和一個“數字”的對應,但是並沒有規定這個“數字”在計算機中怎麽保存。(就像在C中,一個整數既 可以是int,也可以是short。unicode沒有規定用int還是用short來表示一個“字符”)

utf8:unicode實現。它使用unicode定義的“字符”“數字”映射,進而規定了,如何在計算機中保存這個數字。其它的utf16等都是unicode實現。



總結:

編碼是把文本(字符串)轉換成字節流,Unicode格式轉換成其他編碼格式

解碼是把字節流轉換成字符串(文本),其他編碼格式轉成Unicode


python的encode和decode誤讀總結