中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
python3大作戰(zhàn)之encode與decode講解

大家好,很久沒更新了,也是年底了最近比較忙,同時(shí)也在研究python的其他內(nèi)容,畢竟是python小白,自學(xué)道路艱難。

好了今天和大家一起探討下python3編碼過程中對(duì)的一些轉(zhuǎn)碼事宜。

python3中對(duì)文本和二進(jìn)制做了比較清晰的區(qū)分。python3默認(rèn)編碼為unicode,由str類型進(jìn)行表示。二進(jìn)制數(shù)據(jù)使用byte類型表示,所以不會(huì)將str和byte混在一起。在實(shí)際應(yīng)用中我們經(jīng)常需要將兩者進(jìn)行互轉(zhuǎn)

有幾點(diǎn)需要注意:

1:字符串通過編碼轉(zhuǎn)換為字節(jié)碼,字節(jié)碼通過解碼轉(zhuǎn)換為字符串

str--->(encode)--->bytes,bytes--->(decode)--->str

  1. import sys  
  2. print('目前系統(tǒng)的編碼為:',sys.getdefaultencoding())  
  3. name='小明'  
  4. print(type(name))#首先我們來打印下轉(zhuǎn)碼前的name類型,因?yàn)樗莝tr,所以可以通過encode來進(jìn)行編碼  
  5. name1=name.encode('utf-8')  
  6. print(name1)  
輸出為:

  1. 目前系統(tǒng)的編碼為: utf-8  
  2. <class 'str'>  
  3. b'\xe5\xb0\x8f\xe6\x98\x8e'  

這里大家或許會(huì)有一個(gè)疑問,編碼utf-8為什么不是decode轉(zhuǎn)成unicode

因?yàn)殚_頭跟大家講過,python3默認(rèn)就是unicode,utf-8可以看成是unicode的一個(gè)擴(kuò)展集,所以其實(shí)name本身是一個(gè)unicode編碼的,所以可以通過encode編碼成utf-8,這里可以試下,如果認(rèn)為name應(yīng)該是utf-8,那我們來試下encode會(huì)不會(huì)報(bào)錯(cuò)

  1. name1=name.decode('utf-8')  
  2. print(name1)  
  3. 這里會(huì)報(bào)如下錯(cuò)誤:  
  4. AttributeError: 'str' object has no attribute 'decode'  
所以,對(duì)于python3默認(rèn)的就是unicode編碼。

既然已經(jīng)encode成utf-8了,那我們來看下decode會(huì)出現(xiàn)什么樣的結(jié)果

  1. name2=name1.decode('utf-8')  
  2. print(type(name2))  
  3. print(name2)  
  4. 這里要跟大家說下,decode()括號(hào)中為什么寫utf-8,而不寫gbk,可以這樣理解,因?yàn)橐獯a,你總得告訴它我是什么編碼的吧,比如我原先是utf-8格式的編碼,現(xiàn)在要解碼,但是如果冒充utf-8,說自己是gbk,那就會(huì)出現(xiàn)亂碼,見下:  
  5. <class 'str'>  
  6. <class 'str'>  
  7. 灝忔槑  
另外如果大家encode()和decode()括號(hào)中不寫編碼格式,系統(tǒng)會(huì)默認(rèn)為utf-8,大家可以試下。

2:utf-8編碼格式和gbk編碼格式互轉(zhuǎn)

既然知道utf-8編碼與解碼的規(guī)律,那我們來試試它與gbk之間的火花。

  1. name1=name.encode('utf-8')  
  2. name2=name1.decode('utf-8')  
  3. name3=name2.encode('gbk')  
  4. name4=name3.decode('gbk')  
  5. print(type(name3))  
  6. print(name3)  
  7. 下面是name3的結(jié)果  
  8. <class 'bytes'>  
  9. b'\xd0\xa1\xc3\xf7'  
  10. 下面是name4的結(jié)果  
  11. <class 'str'>  
  12. 小明  

從上面可以卡出name2本來是解碼成utf-8的,后來有隊(duì)name2進(jìn)行了gbk編碼,接著又再次對(duì)name3進(jìn)行g(shù)bk解碼

所以不難看出,其實(shí)utf-8和gbk之間都是通過unicode來做一個(gè)中間轉(zhuǎn)換的操作

  1. 在例子中  
  2. name2=name1.decode('utf-8')  
  3. name3=name2.encode('gbk')  
  4. 這兩步的操作就是通過unicode來轉(zhuǎn)的  




本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
python-字符編碼轉(zhuǎn)換
Python編碼介紹
Python內(nèi)部編碼轉(zhuǎn)換
Python對(duì) decode / encode的補(bǔ)充說明
Python 字符編碼轉(zhuǎn)換要訣
[Python]MySQL中文字符與Python中文字符
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服