一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - Python3字符串encode與decode的講解

Python3字符串encode與decode的講解

2021-06-11 00:11西歐伯爵 Python

今天小編就為大家分享一篇關于Python3字符串encode與decode的講解,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧

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

好了今天和大家一起探討下python3編碼過程中對的一些轉碼事宜。

python3中對文本和二進制做了比較清晰的區分。python3默認編碼為unicode,由str類型進行表示。二進制數據使用byte類型表示,所以不會將str和byte混在一起。在實際應用中我們經常需要將兩者進行互轉

有幾點需要注意:

1:字符串通過編碼轉換為字節碼,字節碼通過解碼轉換為字符串

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

?
1
2
3
4
5
6
import sys
print('目前系統的編碼為:',sys.getdefaultencoding())
name='小明'
print(type(name))#首先我們來打印下轉碼前的name類型,因為它是str,所以可以通過encode來進行編碼
name1=name.encode('utf-8')
print(name1)

輸出為:

目前系統的編碼為: utf-8
<class 'str'>
b'\xe5\xb0\x8f\xe6\x98\x8e'

這里大家或許會有一個疑問,編碼utf-8為什么不是decode轉成unicode

因為開頭跟大家講過,python3默認就是unicode,utf-8可以看成是unicode的一個擴展集,所以其實name本身是一個unicode編碼的,所以可以通過encode編碼成utf-8,這里可以試下,如果認為name應該是utf-8,那我們來試下encode會不會報錯

?
1
2
3
4
name1=name.decode('utf-8')
print(name1)
這里會報如下錯誤:
AttributeError: 'str' object has no attribute 'decode'

所以,對于python3默認的就是unicode編碼。

既然已經encode成utf-8了,那我們來看下decode會出現什么樣的結果

?
1
2
3
4
5
6
7
name2=name1.decode('utf-8')
print(type(name2))
print(name2)
這里要跟大家說下,decode()括號中為什么寫utf-8,而不寫gbk,可以這樣理解,因為要解碼,你總得告訴它我是什么編碼的吧,比如我原先是utf-8格式的編碼,現在要解碼,但是如果冒充utf-8,說自己是gbk,那就會出現亂碼,見下:
<class 'str'>
<class 'str'>
灝忔槑

另外如果大家encode()和decode()括號中不寫編碼格式,系統會默認為utf-8,大家可以試下。

2:utf-8編碼格式和gbk編碼格式互轉

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

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

從上面可以卡出name2本來是解碼成utf-8的,后來有隊name2進行了gbk編碼,接著又再次對name3進行gbk解碼

所以不難看出,其實utf-8和gbk之間都是通過unicode來做一個中間轉換的操作

在例子中

?
1
2
name2=name1.decode('utf-8')
name3=name2.encode('gbk')

這兩步的操作就是通過unicode來轉的

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對服務器之家的支持。如果你想了解更多相關內容請查看下面相關鏈接

原文鏈接:https://blog.csdn.net/qq_29053519/article/details/79170519

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 九九在线精品视频 | 国产日韩欧美综合在线 | 四虎永久在线精品国产 | 国产日本欧美亚洲精品视 | 男男gaygays黑人 | 欧洲网色偷偷亚洲男人的天堂 | 人人人人看人人人做人人 | 精品久久久久久无码人妻国产馆 | 日本午夜影院 | 成人国产精品一区二区不卡 | 四虎影院最新网址 | 黑人biglackon10十 | 无遮挡h肉动漫高清在线 | 国内精品一区二区三区东京 | 亚欧毛片基地国产毛片基地 | 色人阁导航 | 性欧美高清强烈性视频 | 楚乔传第二部全60集免费观看 | 亚洲日韩欧美一区二区在线 | 唯美清纯 自拍偷 | fuqer老师| 国产精品久久久久aaaa | 大奶妈咪女教师 | 亚洲精品国产乱码AV在线观看 | 日本人护士免费xxxx视频 | 护士们的母狗 | 万域之王动漫在线观看全集免费播放 | 国产久视频 | 亲爱的客栈第二季免费观看完整版 | 99精品99| 国产区小视频 | 久久精麻豆亚洲AV国产品 | 亚洲免费精品 | 国产精品久久免费观看 | 美女被爆操| 欧美精品久久久亚洲 | 99在线视频观看 | 免费观看无遮挡www的小视频 | 亚洲AV久久无码精品九九软件 | 四虎永久免费地址在线观看 | 91香蕉视频在线观看 |