Python字符串編碼轉(zhuǎn)換 encode()和decode()方法詳細(xì)說明
前言:
我們知道,最早的字符串編碼是 ASCII 編碼,它僅僅對 10 個數(shù)字、26 個大小寫英文字母以及一些特殊字符進行了編碼。ASCII 碼做多只能表示 256 個符號,每個字符只需要占用 1 個字節(jié)。
隨著信息技術(shù)的發(fā)展,各國的文字都需要進行編碼,于是相繼出現(xiàn)了 GBK、GB2312、UTF-8 編碼等,其中 GBK 和 GB2312 是我國制定的中文編碼標(biāo)準(zhǔn),規(guī)定英文字符母占用 1 個字節(jié),中文字符占用 2 個字節(jié);而 UTF-8 是國際通過的編碼格式,它包含了全世界所有國家需要用到的字符,其規(guī)定英文字符占用 1 個字節(jié),中文字符占用 3 個字節(jié)。
Python 3.x 默認(rèn)采用 UTF-8 編碼格式,有效地解決了中文亂碼的問題。
在 Python 中,有 2 種常用的字符串類型,分別為 str 和 bytes 類型,其中 str 用來表示 Unicode 字符,bytes 用來表示二進制數(shù)據(jù)。str 類型和 bytes 類型之間就需要使用 encode() 和 decode() 方法進行轉(zhuǎn)換。
1.Python encode()方法
encode() 方法為字符串類型(str)提供的方法,用于將 str 類型轉(zhuǎn)換成 bytes 類型,這個過程也稱為“編碼”。
encode() 方法的語法格式如下:
str.encode([encoding="utf-8"][,errors="strict"])
注意:格式中用 [] 括起來的參數(shù)為可選參數(shù),也就是說,在使用此方法時,可以使用 [] 中的參數(shù),也可以不使用。
該方法各個參數(shù)的含義如表 1 所示。
表 1 encode()參數(shù)及含義:
| 參數(shù) | 含義 |
|---|---|
| str | 表示要進行轉(zhuǎn)換的字符串。 |
| encoding = "utf-8" | 指定進行編碼時采用的字符編碼,該選項默認(rèn)采用 utf-8 編碼。例如,如果想使用簡體中文,可以設(shè)置 gb2312。 當(dāng)方法中只使用這一個參數(shù)時,可以省略前邊的“encoding=”,直接寫編碼格式,例如 str.encode("UTF-8")。 |
| errors = "strict" | 指定錯誤處理方式,其可選擇值可以是:
|
注意:使用 encode() 方法對原字符串進行編碼,不會直接修改原字符串,如果想修改原字符串,需要重新賦值。
【例 1】將 str 類型字符串“C語言中文網(wǎng)”轉(zhuǎn)換成 bytes 類型。
>>> str = "C語言中文網(wǎng)" >>> str.encode() b'C\xe8\xaf\xad\xe8\xa8\x80\xe4\xb8\xad\xe6\x96\x87\xe7\xbd\x91'
此方式默認(rèn)采用 UTF-8 編碼,也可以手動指定其它編碼格式,例如:
>>> str = "C語言中文網(wǎng)"
>>> str.encode('GBK')
b'C\xd3\xef\xd1\xd4\xd6\xd0\xce\xc4\xcd\xf8'
2.Python decode()方法
和 encode() 方法正好相反,decode() 方法用于將 bytes 類型的二進制數(shù)據(jù)轉(zhuǎn)換為 str 類型,這個過程也稱為“解碼”。
decode() 方法的語法格式如下:
bytes.decode([encoding="utf-8"][,errors="strict"])
該方法中各參數(shù)的含義如表 2 所示。
表 2 decode()參數(shù)及含義:
| 參數(shù) | 含義 |
|---|---|
| bytes | 表示要進行轉(zhuǎn)換的二進制數(shù)據(jù)。 |
| encoding="utf-8" | 指定解碼時采用的字符編碼,默認(rèn)采用 utf-8 格式。當(dāng)方法中只使用這一個參數(shù)時,可以省略“encoding=”,直接寫編碼方式即可。 注意,對 bytes 類型數(shù)據(jù)解碼,要選擇和當(dāng)初編碼時一樣的格式。 |
| errors = "strict" | 指定錯誤處理方式,其可選擇值可以是:
|
【例 2】
>>> str = "C語言中文網(wǎng)" >>> bytes=str.encode() >>> bytes.decode() 'C語言中文網(wǎng)'
注意:如果編碼時采用的不是默認(rèn)的 UTF-8 編碼,則解碼時要選擇和編碼時一樣的格式,否則會拋出異常,例如:
>>> str = "C語言中文網(wǎng)"
>>> bytes = str.encode("GBK")
>>> bytes.decode() #默認(rèn)使用 UTF-8 編碼,會拋出以下異常
Traceback (most recent call last):
File "<pyshell#10>", line 1, in <module>
bytes.decode()
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd3 in position 1: invalid continuation byte
>>> bytes.decode("GBK")
'C語言中文網(wǎng)'
到此這篇關(guān)于Python字符串編碼轉(zhuǎn)換 encode()和decode()方法詳細(xì)說明的文章就介紹到這了,更多相關(guān)Python encode()和decode()方法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Google colab中從kaggle中接入數(shù)據(jù)的操作方法
這篇文章主要介紹了Google colab中如何從kaggle中接入數(shù)據(jù),本文涉及到兩大平臺內(nèi)容,所以我默認(rèn)你已經(jīng)擁有了,并且使用過了一段時間的google賬號和kaggle賬號,需要的朋友可以參考下2024-03-03
Python編程實現(xiàn)的簡單神經(jīng)網(wǎng)絡(luò)算法示例
這篇文章主要介紹了Python編程實現(xiàn)的簡單神經(jīng)網(wǎng)絡(luò)算法,結(jié)合實例形式分析了神經(jīng)網(wǎng)絡(luò)算法的原理及Python相關(guān)算法實現(xiàn)技巧,需要的朋友可以參考下2018-01-01
Matplotlib繪圖基礎(chǔ)之配置參數(shù)詳解
Matplotlib?提供了大量配置參數(shù),這些參數(shù)可以但不限于讓我們從整體上調(diào)整通過?Matplotlib?繪制的圖形樣式,下面我們就來看看如何巧妙的運用這些參數(shù)吧2023-08-08
Python虛擬環(huán)境virtualenv是如何使用的
今天給大家?guī)淼氖顷P(guān)于Python虛擬環(huán)境的相關(guān)知識,文章圍繞著Python虛擬環(huán)境virtualenv是如何使用的展開,文中有非常詳細(xì)的解釋及代碼示例,需要的朋友可以參考下2021-06-06

