Python-encode與decode--編碼相關知識

爲了溝通的便利,Unicode(萬國碼)應運而生,這套編碼表將世界上所有的符號都納入其中。每個符號都有一個獨一無二的編碼,現在Unicode可以容納100多萬個符號,所有語言都可以互通,一個網頁上也可以顯示多國語言。

看起來皆大歡喜。但是!問題又來了,自從英文世界喫上了Unicode這口大鍋飯,爲遷就一些佔用字節比較多的語言,英文也要跟着佔兩個字節。比如要存儲A,原本00010001就可以了,現在偏得用兩個字節:00000000 00010001纔行,這樣對計算機空間存儲是種極大的浪費!

基於這個痛點,科學家們又提出了天才的想法:UTF-8(8-bit Unicode Transformation Format)。它是一種針對Unicode的可變長度字符編碼,它可以使用1~4個字節表示一個符號,根據不同的符號而變化字節長度,而當字符在ASCII碼的範圍時,就用一個字節表示,所以UTF-8還可以兼容ASCII編碼。

Python3當中,程序處理我們輸入的字符串,是默認使用Unicode編碼的,所以你什麼語言都可以輸入。

UnicodeUTF-8這種曖昧的關係一言以蔽之:Unicode是內存編碼的規範,而UTF-8是如何保存和傳輸Unicode的手段

print('吳楓'.encode('utf-8'))
print('吳楓'.encode('gbk'))
print(b'\xe5\x90\xb4\xe6\x9e\xab'.decode('utf-8'))
print(b'\xce\xe2\xb7\xe3'.decode('gbk'))

encode:變成bytes,按某種編碼方式

decode:把bytes變成字符,按某種編碼方式

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章