ascii:american standard coding information interchange
gbk : "guo biao"、「kuozhan」 拼音首字母縮寫
為解決在多語言混合的文字中,顯示出來會有亂碼。【unicode】編碼應運而生
字母a
用ascii編碼是十進位制的65
,二進位制的01000001
;
字元0
用ascii編碼是十進位制的48
,二進位制的00110000
,注意字元'0'
和整數0
是不同的;
漢字中
已經超出了ascii編碼的範圍,用unicode編碼是十進位制的20013
,二進位制的01001110 00101101
。
你可以猜測,如果把ascii編碼的a
用unicode編碼,只需要在前面補0就可以,因此,a
的unicode編碼是00000000 01000001
。
如果統一成unicode編碼,亂碼問題從此消失了。但是,如果你寫的文字基本上全部是英文的話,用unicode編碼比ascii編碼需要多一倍的儲存空間,在儲存和傳輸上就十分不划算。
所以,本著節約的精神,又出現了把unicode編碼轉化為「可變長編碼」的utf-8
編碼。
python 2.x預設的字元編碼是ascii,預設的檔案編碼也是ascii。
python 3.x預設的字元編碼是unicode,預設的檔案編碼是utf-8。
由於python的字串型別是str,在記憶體中以unicode表示,乙個字元對應若干個位元組。如果要在網路上傳輸,或者儲存到磁碟上,就需要把str變為以位元組為單位的bytes。
以unicode表示的str通過encode()方法可以編碼為指定的bytes,例如:
>>> 'abc'.encode('
ascii')
b'abc'
>>> '
中文'.encode('
utf-8')
b'\xe4\xb8\xad\xe6\x96\x87
'
解碼
>>> b'\xe4\xb8\xad\xe6\x96\x87
'.decode('
utf-8
')
'中文'
python字串和編碼
看了廖雪峰 字串和編碼,對編碼問題講的很透徹,這裡引用裡面的一段話 總結一下現在計算機系統通用的字元編碼工作方式 在計算機記憶體中,統一使用unicode編碼,當需要儲存到硬碟或者需要傳輸的時候,就轉換為utf 8編碼。用記事本編輯的時候,從檔案讀取的utf 8字元被轉換為unicode字元到記憶體...
python的字串和編碼
作為備忘,因為經常看了字元編碼,卻在真的需要理解時,還是不理解。如果 py 檔案本身使用utf 8編碼,並且也申明了 coding utf 8 開啟命令提示符測試就可以正常顯示中文 python提供了 ord 函式獲取字元的整數表示,chr 函式把編碼轉換為對應的字元 ord a 65 ord 中 ...
Python字串編碼
在python中有些特殊的地方是存在兩種字串,分別為str和unicode字串,他們都繼承自basestring。如 s hello world s為str us u hello world us為unicode。使用help str 和help unicode 可以檢視各自說明,他們都有decod...