encode()、decode()字元編碼問題
阿新 • • 發佈:2021-11-02
python3中,更改了預設的編碼方式,更改為了unicode
前提知識:
- utf-8與Unicode的關係:https://baike.baidu.com/item/UTF-8/481798?fr=aladdin
- \x表示是十六進位制的資料。
- encode預設是utf-8,右圖中\x對應的是Unicode轉成UTF-8編碼的資料:
- UTF-8: 使用1、2、3、4個位元組表示所有字元;優先使用1個字元、無法滿足則使增加一個位元組,最多4個位元組。英文佔1個位元組、歐洲語系佔2個、東亞佔3個,其它及特殊字元佔4個
- Unicode的容量極大,其他的編碼幾乎都有在上面有對映,比如中文編碼方式gbk
- ,所以‘中’在Unicode中的編碼為20013
Python3裡str是unicode的,對於二進位制,十六進位制等格式的使用bytes
decode就是告訴Unicode你是什麼編碼的:
encode的結果是個bytes物件:是對應字元各種編碼方式的十六進位制表示
下面是按gbk格式encode的結果:
所以decode和encode的實際上是: