python的编码 encode
?
Python3 encode()方法
描述
encode() 方法以指定的編碼格式編碼字符串。errors參數可以指定不同的錯誤處理方案。
語法
encode()方法語法:
str.encode(encoding='UTF-8',errors='strict')參數
- encoding -- 要使用的編碼,如: UTF-8。
- errors -- 設置不同錯誤的處理方案。默認為 'strict',意為編碼錯誤引起一個UnicodeError。 其他可能得值有 'ignore', 'replace', 'xmlcharrefreplace', 'backslashreplace' 以及通過 codecs.register_error() 注冊的任何值。
返回值
該方法返回編碼后的字符串,它是一個 bytes 對象。
實例
以下實例展示了encode()方法的實例:
實例(Python 3.0+)
#!/usr/bin/python3 str = "菜鳥教程"; str_utf8 = str.encode("UTF-8") str_gbk = str.encode("GBK") print(str) print("UTF-8 編碼:", str_utf8) print("GBK 編碼:", str_gbk) print("UTF-8 解碼:", str_utf8.decode('UTF-8','strict')) print("GBK 解碼:", str_gbk.decode('GBK','strict'))
以上實例輸出結果如下:
菜鳥教程 UTF-8 編碼: b'\xe8\x8f\x9c\xe9\xb8\x9f\xe6\x95\x99\xe7\xa8\x8b' GBK 編碼: b'\xb2\xcb\xc4\xf1\xbd\xcc\xb3\xcc' UTF-8 解碼: 菜鳥教程 GBK 解碼: 菜鳥教程python3中encode和decode跟python2還是有一定的區別的,在python3中:
? encode(編碼):按照某種規則將“文本”轉換為“字節流”。 ?python 3中表示:unicode變成str
? ?decode(解碼):將“字節流”按照某種規則轉換成“文本”。 ? python3中表示:str變成unicode
字符串在Python內部的表示是Unicode編碼,因此在做編碼轉換時,通常需要以Unicode作為中間編碼,即先將其他編碼的字符串解碼(decode)成Unicode,再從Unicode編碼(encode)成另一種編碼。
u代表Unicode類型,s代表str類型
u.encode('...'):只要你填寫了正確的編碼,基本上總是能成功的。就像任何文件都可以壓縮成zip文件。
?
u.decode('...'):沒有任何意義,因為decode是將str轉為unicode編碼,而u本身就是unicode編碼的。
?
s.encode('...'):在python 3中,將產生一個編碼后的byte類型的字符串(這里有點像Python 2.x中的str),byte類型的字符串是支持解碼操作的。
?
s.decode('...'):運行都會出錯。因為python 3中的str類型對象有點像Python 2中的unicode, 而decode是將str轉為unicode編碼,所以str僅有一個encode方法,調用這個方法后將產生一個編碼后的byte類型的字符。
?
按照上述規則對一般的字符編碼解碼可以基本解決,同時如果還有一些困惑可以百科一下Unicode,gbk等常用編碼格式,了解一下他們的區別和編碼原理。
python3默認編碼為unicode,由str類型進行表示。二進制數據使用byte類型表示?
字符串通過編碼轉換成字節碼,字節碼通過解碼成為字符串?
encode:str –> bytes?
decode:bytes – > str?
直接上代碼:
import sys
print("print1:",sys.getdefaultencoding())
name ="中國"
name = name.encode("utf-8")
print("print2:",type(name))
name = name.decode("utf-8")
name = name.encode("gbk")
print("print4:",type(name))
1
2
3
4
5
6
7
8
結果:?
?
分析:
python3默認的編碼是unicode,utf-8可以看做是unicode的一個擴展集。
gbk在python中可直接轉換成為utf-8,如print4所示,參考網址:?
https://www.cnblogs.com/2017Python/articles/6569750.html
字符串轉換成字節(encode):
s1 ?= "中國"
//法1:
s1 = s1.encode('utf-8')
//方2:,缺省也是可以滴
s1 = s1.encode()
//方3:
s1 = s1.encode(encoding='utf-8')
//法4:我對此語句的理解是,現在用bytes(s1,encoding='utf-8')這個方法轉換成字符節。原先是按照utf-8進行編碼,
s1 = ?bytes(s1, encoding='utf-8')
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
字節轉換成字符串(decode):
s1 = "中國"
s1 = s1.encode("utf-8")
//法1:現在的s1是字節類型
str = s1.decode('utf-8')
//法2:其中1是二進制類型,我對此語句的理解是,現在用str(bytes,encoding='utf-8')這個方法轉換成字符串。按照utf-8進行編碼,
str1 = str(s1, encoding='utf-8')
?
?
?
?
?
總結
以上是生活随笔為你收集整理的python的编码 encode的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 自己动手实现简易STL
- 下一篇: jenkins使用python plug