python 字元編碼練習

2022-03-15 20:17:32 字數 2746 閱讀 6568

通過下面的練習,加深對python字元編碼的認識

#

\x00 - \xff 256個字元>>>a = range(256)

>>>b = bytes(a) #

不用引數encoding>>>b

b'\x00\x01\x02 ... \xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff'>>>b.decode('

utf-8

') #

報錯traceback (most recent call last):

file""

, line 1, in unicodedecodeerror: 'utf-8' codec can't decode byte 0x80 in position 128: invalid start byte>>>b.decode('

unicode-escape

') #

正常'\x00\x01\x02 ... \xf6÷\xf8ùú\xfbü\xfd\xfe\xff'

#題外:上面幾句等價於下面一句

>>>''.join(list(map(chr, range(256))))

'\x00\x01\x02 ... \xf6÷\xf8ùú\xfbü\xfd\xfe\xff'

>>>a = '

abc'>>>a

'abc'>>>b = bytes(a, encoding='

utf-8

') #

方式一:把 'abc' 變為位元組資料>>>b

b'abc'>>>c = a.encode('

utf-8

') #

方式二:把 'abc' 變為位元組資料,與一等價>>>c

b'abc'

#\x00 - \xff 256個字元,bytearray方式>>>a = range(256)

>>>b =bytearray(a)

>>>b

bytearray(b

'\x00\x01\x02 ... \xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff')

>>>b.decode('

unicode-escape')

'\x00\x01\x02 ... \xf6÷\xf8ùú\xfbü\xfd\xfe\xff'

#中文編碼>>>a = '

中'>>>a

'中'>>>b = a.encode('

gbk'

)>>>b

b'\xd6\xd0'>>>c = a.encode('

utf-8')

>>>c

b'\xe4\xb8\xad'>>>d = a.encode('

unicode-escape')

>>>d

b'\\u4e2d'>>>e = a.encode('

cp936')

>>>e

b'\xd6\xd0'

#中文解碼>>>a.decode('

utf-8')

traceback (most recent call last):

file

"", line 1, in attributeerror: 'str' object has no attribute 'decode'>>>b.decode()

traceback (most recent call last):

file

"", line 1, in unicodedecodeerror: 'utf-8' codec can't decode byte 0xd6 in position 0: invalid continuation byte>>>b.decode('

utf-8')

traceback (most recent call last):

file

"", line 1, in unicodedecodeerror: 'utf-8' codec can't decode byte 0xd6 in position 0: invalid continuation byte>>>b.decode('

gbk'

)'中'>>>b.decode('

cp936

') #

gbk編碼的可以cp936解碼,反之不行。因為gbk是cp936的乙個子集

'中'

python官方支援的編碼格式大全:

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