這裡主要描述以下三種編碼方式:
(1)ascii
(2)unicode
(3)uft-8
(4)gbk
ascii 碼
在計算機內部,所有的資訊最終都是乙個二進位制值。每乙個二進位制位(bit)有0和1兩種狀態,因此 8 個 二進位制位就可以組合成 256 種狀態,這被稱為乙個位元組(byte)。也就是說,乙個位元組一共可以用來表示 256種不同的狀態,每乙個狀態對應乙個符號,就是 256 個符號,從 00000000 到 11111111
美國定製了一套字元編碼,對英語字元與二進位制位之間的關係,做了統一規定。這被稱為 ascii 碼,一直沿用至今。
乙個字元用 1 個位元組表示 1 byte = 8 bit
ascii 碼只包含字母和英文中的特殊符號,不包括漢字;
unicode (萬國碼)
世界上存在很多種不同的編碼,同乙個二進位制數字可以被解釋成不同的符號。因此,想要開啟乙個文字檔案,就必須知道它的編碼方式,否則用錯誤的編碼方式開啟就會出現亂碼。如果有一種編碼,將世界上所有的符號都納入其中。每乙個符號都給予乙個獨一無二的編碼,那麼亂碼問題就會消失。這就是 unicode 萬國碼的由來,這是一種所有符號的編碼。
字母:乙個字母等於 4 個 byte = 32 bit
漢字:乙個字母等於 4 個 byte = 32 bit
1. unicode 的問題
需要注意的是, unicode 只是乙個字符集,它規定了符號的二進位制**,卻沒有規定這個二進位制**應該如何儲存。
(1)如何才能區分 unicode 和 ascii ? 計算機怎麼知道三個位元組表示乙個符號,而不是分別表示三個符號呢?
(2)英文在 ascii 碼中,只需要乙個位元組表示就夠了,如果採用 unicode 統一規定,每個符號用三個或四個字元表示,這對於儲存來說是極大的浪費,文字檔案的大小胡因此大出二三倍。
utf-8
網際網路的普及,強烈要求出現一種統一的編碼方式。utf-8 就是在網際網路上使用最廣的一種 unicode 的實現方式。
字母:乙個字母等於 2 byte = 8 bit
漢字:乙個中文等於 3 byte = 24 bit
gbk
包含全部中文字元,utf-8則包含全世界所有國家需要用到的字元;
字母:乙個字母 1 byte = 8 bit
漢字:乙個漢字 2 byte = 16 bit
1. = 賦值
例子:
s1 = 'hkey's2 = 'xiaofei'
2. == 比較值是否相等
print( 1 == 2)# 執行結果:
# false
3. is 比較記憶體位址
s1 = 6s2 = 6
print(s1 is s2)
# 執行結果:
# true
s11 = 'adfadsasdfasdff'
s22 = 'adfadsasdfasdff1'
print(s11 is s22)
# 執行結果:
# false
python字元編碼
ascii 碼是乙個位元組,通常只能顯示英文本母和數字。unicode碼為了顯示多種語言產生,但是要占用兩個位元組,顯示文字要占用大量空間 utf 8 為了節約空間而生,英文本元只用乙個位元組儲存,中文字元需要三個位元組 character ascii unicode utf 8 a01000000...
python字元編碼
列印python檔案編碼 import sys print sys.getdefaultencoding 中文的乙個字元unicode占用2個位元組。對在於ascii字元占用1個位元組 utf 8中 中文字元佔3個位元組,英文本元占用1個位元組 編碼和轉碼 unicode不能再解碼了 它是基層的 u...
Python字元編碼
在用python程式設計中,字串有兩種表示方法 string 和 u string 為什麼字串要是用這兩種表達方式。不是僅僅用前一種呢?使用type 函式檢視,它們各自是str物件和unicode物件。這兩個物件有什麼差別嗎?還有經經常使用到的encode 和decode 又是幹什麼的呢?都說pyt...