標籤:文字 個數 color 使用 編碼 一個 定義 encode 字串轉換
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誤讀總結