python字串和編碼

2022-07-16 13:12:16 字數 1360 閱讀 1021

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...