encode()、decode()字符編碼問題



python3中,更改了默認的編碼方式,更改為了unicode

 

前提知識:

  1. utf-8與Unicode的關系:https://baike.baidu.com/item/UTF-8/481798?fr=aladdin
  2. \x表示是十六進制的數據。
  3. encode默認是utf-8,右圖中\x對應的是Unicode轉成UTF-8編碼的數據:image
  4. UTF-8: 使用1、2、3、4個字節表示所有字符;優先使用1個字符、無法滿足則使增加一個字節,最多4個字節。英文占1個字節、歐洲語系占2個、東亞占3個,其它及特殊字符占4個
  5. Unicode的容量極大,其他的編碼幾乎都有在上面有映射,比如中文編碼方式gbk
  6. imageimage,所以‘中’在Unicode中的編碼為20013

 

Python3里str是unicode的,對於二進制,十六進制等格式的使用bytes

 

decode就是告訴Unicode你是什么編碼的:

 

image

 

image

image

 

encode的結果是個bytes對象:是對應字符各種編碼方式的十六進制表示

下面是按gbk格式encode的結果:

imageimage

 

 

 

所以decode和encode的實際上是:

image


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM