python3大作戰之encode與decode講解- 程式人生

文章推薦指數: 80 %
投票人數:10人

因為開頭跟大家講過,python3預設就是unicode,utf-8可以看成是unicode的一個擴充套件集,所以其實name本身是一個unicode編碼的,所以可以通過encode ... 程式人生>>python3大作戰之encode與decode講解 python3大作戰之encode與decode講解 阿新••發佈:2019-01-06 大家好,很久沒更新了,也是年底了最近比較忙,同時也在研究python的其他內容,畢竟是python小白,自學道路艱難。

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

python3中對文字和二進位制做了比較清晰的區分。

python3預設編碼為unicode,由str型別進行表示。

二進位制資料使用byte型別表示,所以不會將str和byte混在一起。

在實際應用中我們經常需要將兩者進行互轉 有幾點需要注意: 1:字串通過編碼轉換為位元組碼,位元組碼通過解碼轉換為字串 str--->(encode)--->bytes,bytes--->(decode)--->str importsys print('目前系統的編碼為:',sys.getdefaultencoding()) name='小明' print(type(name))#首先我們來列印下轉碼前的name型別,因為它是str,所以可以通過encode來進行編碼 name1=name.encode('utf-8') print(name1)輸出為: 目前系統的編碼為:utf-8 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會不會報錯name1=name.decode('utf-8') print(name1) 這裡會報如下錯誤: AttributeError:'str'objecthasnoattribute'decode'所以,對於python3預設的就是unicode編碼。

既然已經encode成utf-8了,那我們來看下decode會出現什麼樣的結果 name2=name1.decode('utf-8') print(type(name2)) print(name2) 這裡要跟大家說下,decode()括號中為什麼寫utf-8,而不寫gbk,可以這樣理解,因為要解碼,你總得告訴它我是什麼編碼的吧,比如我原先是utf-8格式的編碼,現在要解碼,但是如果冒充utf-8,說自己是gbk,那就會出現亂碼,見下: 灝忔槑另外如果大家encode()和decode()括號中不寫編碼格式,系統會預設為utf-8,大家可以試下。

2:utf-8編碼格式和gbk編碼格式互轉 既然知道utf-8編碼與解碼的規律,那我們來試試它與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的結果 b'\xd0\xa1\xc3\xf7' 下面是name4的結果 小明 從上面可以卡出name2本來是解碼成utf-8的,後來有隊name2進行了gbk編碼,接著又再次對name3進行gbk解碼 所以不難看出,其實utf-8和gbk之間都是通過unicode來做一箇中間轉換的操作 在例子中 name2=name1.decode('utf-8') name3=name2.encode('gbk') 這兩步的操作就是通過unicode來轉的 【pytorch】variable和tensor «上一篇 WebStorm安裝_破解指南下一篇» 相關推薦 python3大作戰之encode與decode講解 大家好,很久沒更新了,也是年底了最近比較忙,同時也在研究python的其他內容,畢竟是python小白,自學道路艱難。

好了... Python中的encode與decode,詳解字串與位元組物件之間的轉換 1.相關異常我們在處理交換的資料時經常遇到這樣的異常:TypeError:can'tuseastringpatter... python開發之virtualenv與virtualenvwrapper講解 在使用 Python 開發的過程中,工程一多,難免會碰到不同的工程依賴不同版本的庫的問題; 亦或者是在開發過程中不想讓物理環境裡充斥各種各... python開發之virtualenv與virtualenvwrapper講解python開發之virtualenv與virtualenvwrapper講解 python開發之virtualenv與virtualenvwrapper講解 ... Mybatis入門之resultMap與resultType講解例項 resultMap:適合使用返回值是自定義實體類的情況 resultType:適合使用返回值得資料型別是非自定義的,即j... Expo大作戰(二十六)--exposdkapi之Video和WebBrowser astdownload公眾根據pen正在但我AIvolume 簡要:本系列文章講會對expo進... Expo大作戰(二十七)--exposdkapi之Util(expo自帶工具類),tackSnapshotAsync,Svg,SQLite helpcount開發段落mdaandmpatstr語句 簡要:本系列文章講會對expo進行全面的介... Expo大作戰(二十九)--exposdkapi之registerRootComponent(註冊跟組件),ScreenOrientation(屏幕切換),SecureStore, 修改使用passconGoripsharedpackageapi 簡要:本系列文章講會對expo進行... Expo大作戰(三十一)--exposdkapi之Payments(expo中的支付),翻譯這篇文章傻逼了,完全不符合國內用戶,我只負責翻譯大家可以略過! span依賴require查看例如rdfNidtailonly 簡要:本系列文章講會對expo進行全... Expo大作戰(三十三)--exposdkapi之MapView(地圖),MailComposer(磁力傳感計),Lottie(動畫) 填充標記androidcommitanimsubjectconf項目cancel 簡要:本系列文章講... 搜尋 基礎教學 Mysql入門 Sql入門 Android入門 Docker入門 Go語言入門 Ruby程式入門 Python入門 Python進階 Django入門 Python爬蟲入門 最近訪問 python3大作戰之encode與decode講解 python併發程式設計之執行緒剩餘內容(執行緒佇列,執行緒池)及協程 JS-prototype connected+standby Lua中的條件判斷 $.view()的使用和使用find()取datatable的一行的行序號的差別 jvm裡面年輕代,老年代,永久代,元空間 如何檢查線程是否死鎖了? Android+修改EditText的游標顏色和背景色 HTML5之拖放功能(多檔案上傳和元素拖放)



請為這篇文章評分?