python中的編碼與解碼

2021-10-08 08:16:58 字數 3448 閱讀 5173

解碼:位元組—以特定的編碼方式—>字元

ascll

unicode字符集

utf-8

gbk/gb2312/gb18030

個人感覺python2中的編碼非常的不友好,而目前python3中以「utf-8」 作為系統預設編碼讓人省心不少

sys.getdefaultencoding() #檢視預設編碼方式
對應關係:

str(字串)

bytes(二進位制位元組) python3 中在字元引號前加『b』 表示

a='type is str'

b=b'type is bytes'

print(type(a))

print(type(b))

結果為

編碼:str 轉化為bytes

解碼:bytes 轉化為str

接下來是本文的重點 python編碼和解碼的函式隆重登場

str.encode(encoding='utf-8',errors='strict') 

str.decode(encoding='utf-8',errors='strict')

encoding – 要使用的編碼,如"utf-8"。

errors – 設定不同錯誤的處理方案。預設為 『strict』,意為編碼錯誤引起乙個unicodeerror。 其他可能得值有 『ignore』, 『replace』, 『xmlcharrefreplace』, 『backslashreplace』 以及通過 codecs.register_error() 註冊的任何值。

下面分別以utf-8,unicode,gbk的方式解碼,程式和結果如下:

a='你好! 世界'

s1=a.encode() # 預設是utf-8

s2=a.encode('unicode-escape') # 以unicode

s3=a.encode('gbk')#以 gbk的方式

# 結果如下

b'\xe4\xbd\xa0\xe5\xa5\xbd\xef\xbc\x81 \xe4\xb8\x96\xe7\x95\x8c' #utf-8的結果

b'\\u4f60\\u597d\\uff01 \\u4e16\\u754c' #unicode的結果

b'\xc4\xe3\xba\xc3\xa3\xa1 \xca\xc0\xbd\xe7' #gbk的結果

簡答:raw_unicode-escape 是直接轉化字串型別,而 unicode_escape 是編碼或解碼成指定的資料型別1 encode(『unicode-escape』)可將此str編碼為bytes型別, 內容則是unicode形式

2 decode(『unicode-escape』)可將內容為unicode形式的bytes型別轉換為str

3 encode(『raw_unicode_escape』)將此str轉化為bytes

4 decode(『raw_unicode_escape』)輸出內容為bytes形式的字串

以下貼出我的試驗結果,最好自己寫以下**實踐一下,能夠快速助自己理解

encode(『unicode-escape』)可將此str編碼為bytes型別, 內容則是unicode形式

a='\xe4\xbd\xa0\xe5\xa5\xbd\xef\xbc\x81 \xe4\xb8\x96\xe7\x95\x8c'

en=a.encode('unicode_escape')

de=en.decode()

print('unicode_escape的型別 %s'% type(en))

print(en)

print('unicode_escape的型別 %s'% type(de))

print(de)

結果如下:

raw_unicode_escape的型別 b'\\xe4\\xbd\\xa0\\xe5\\xa5\\xbd\\xef\\xbc\\x81 \\xe4\\xb8\\x96\\xe7\\x95\\x8c'

raw_unicode_escape的型別 \xe4\xbd\xa0\xe5\xa5\xbd\xef\xbc\x81 \xe4\xb8\x96\xe7\x95\x8c

encode(『raw_unicode_escape』)將此str轉化為bytes, 再decode為str

a='\xe4\xbd\xa0\xe5\xa5\xbd\xef\xbc\x81 \xe4\xb8\x96\xe7\x95\x8c'

en=a.encode('raw_unicode_escape')

de=en.decode()

print('raw_unicode_escape的型別 %s'% type(en))

print(en)

print('raw_unicode_escape的型別 %s'% type(de))

print(de)

結果如下:

raw_unicode_escape的型別 b'\xe4\xbd\xa0\xe5\xa5\xbd\xef\xbc\x81 \xe4\xb8\x96\xe7\x95\x8c'

raw_unicode_escape的型別 你好! 世界

decode(『unicode-escape』)可將內容為unicode形式的bytes型別轉換為str

a=b'\u4f60\u597d \u4e16\u754c\uff01'

de=a.decode('unicode-escape')

print(type(a))

print('unicode_escape的型別 %s'% type(de))

print(de)

結果如下:

unicode_escape的型別 你好 世界!

decode(『raw_unicode_escape』)輸出內容為bytes形式的字串

a=b'\u4f60\u597d \u4e16\u754c\uff01'

de=a.decode('raw_unicode-escape')

print(type(a))

print('unicode_escape的型別 %s'% type(de))

print(de)

結果如下:

unicode_escape的型別 你好 世界!

Python中的編碼與解碼

之前一直對python檔案中編碼解碼糊里糊塗,今天看到一篇文章,覺得把我講的有點明白了。寫個心得吧。python 裡面的編碼和解碼也就是 unicode 和 str 這兩種形式的相互轉化。編碼是 unicode str,相反的,解碼就是 str unicode。str形式,也就是字串形式都是以一定的...

Python 編碼與解碼

字串型別是對人類友好的符號,但計算機只認識一種符號,那就是二進位制 binary 數,或者說是數字。為了用計算機可以理解的數字描述人類使用的字元,我們需要一張數字與字元對應的表。我們都知道在計算機中 1 byte 8bits,可以儲存 0 255共256個值,也就是說 1byte最多可以表示 256...

python的編碼與解碼

1.特殊情況 xe5 xae x9d xe9 x python2控制台bai輸出會有這種情況,包括以下list裡面的漢字雖du然是utf8格式的但仍然zhi不可見中文。只需要包要檢視的list轉為str並decode string escape 例子為 li 33,39 寶馬 36,39 馬 pri...