python 字元編碼

2022-05-27 06:27:09 字數 1593 閱讀 7897

這裡主要描述以下三種編碼方式:

(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 = 6

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