通過下面的練習,加深對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...