小編給大家分享一下Python3字符串encode與decode有什么用,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
python3中對文本和二進制做了比較清晰的區(qū)分。python3默認編碼為unicode,由str類型進行表示。二進制數(shù)據(jù)使用byte類型表示,所以不會將str和byte混在一起。在實際應(yīng)用中我們經(jīng)常需要將兩者進行互轉(zhuǎn)
有幾點需要注意:
1:字符串通過編碼轉(zhuǎn)換為字節(jié)碼,字節(jié)碼通過解碼轉(zhuǎn)換為字符串
str--->(encode)--->bytes,bytes--->(decode)--->str
import sys print('目前系統(tǒng)的編碼為:',sys.getdefaultencoding()) name='小明' print(type(name))#首先我們來打印下轉(zhuǎn)碼前的name類型,因為它是str,所以可以通過encode來進行編碼 name1=name.encode('utf-8') print(name1)
輸出為:
目前系統(tǒng)的編碼為: utf-8
<class 'str'>
b'\xe5\xb0\x8f\xe6\x98\x8e'
這里大家或許會有一個疑問,編碼utf-8為什么不是decode轉(zhuǎn)成unicode
因為開頭跟大家講過,python3默認就是unicode,utf-8可以看成是unicode的一個擴展集,所以其實name本身是一個unicode編碼的,所以可以通過encode編碼成utf-8,這里可以試下,如果認為name應(yīng)該是utf-8,那我們來試下encode會不會報錯
name1=name.decode('utf-8') print(name1) 這里會報如下錯誤: AttributeError: 'str' object has no attribute 'decode'
所以,對于python3默認的就是unicode編碼。
既然已經(jīng)encode成utf-8了,那我們來看下decode會出現(xiàn)什么樣的結(jié)果
name2=name1.decode('utf-8') print(type(name2)) print(name2) 這里要跟大家說下,decode()括號中為什么寫utf-8,而不寫gbk,可以這樣理解,因為要解碼,你總得告訴它我是什么編碼的吧,比如我原先是utf-8格式的編碼,現(xiàn)在要解碼,但是如果冒充utf-8,說自己是gbk,那就會出現(xiàn)亂碼,見下: <class 'str'> <class 'str'> 灝忔槑
另外如果大家encode()和decode()括號中不寫編碼格式,系統(tǒng)會默認為utf-8,大家可以試下。
2:utf-8編碼格式和gbk編碼格式互轉(zhuǎn)
既然知道utf-8編碼與解碼的規(guī)律,那我們來試試它與gbk之間的火花。
name1=name.encode('utf-8') name2=name1.decode('utf-8') name3=name2.encode('gbk') name4=name3.decode('gbk') print(type(name3)) print(name3) 下面是name3的結(jié)果 <class 'bytes'> b'\xd0\xa1\xc3\xf7' 下面是name4的結(jié)果 <class 'str'> 小明
從上面可以卡出name2本來是解碼成utf-8的,后來有隊name2進行了gbk編碼,接著又再次對name3進行g(shù)bk解碼
所以不難看出,其實utf-8和gbk之間都是通過unicode來做一個中間轉(zhuǎn)換的操作
在例子中
name2=name1.decode('utf-8') name3=name2.encode('gbk')
這兩步的操作就是通過unicode來轉(zhuǎn)的
以上是“Python3字符串encode與decode有什么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計公司行業(yè)資訊頻道!
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
本文名稱:Python3字符串encode與decode有什么用-創(chuàng)新互聯(lián)
本文鏈接:http://aaarwkj.com/article34/dophpe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、外貿(mào)建站、服務(wù)器托管、網(wǎng)站設(shè)計、外貿(mào)網(wǎng)站建設(shè)、微信公眾號
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容