Python字符串編碼轉換 encode()和decode()方法詳細說明
前言:
我們知道,最早的字符串編碼是 ASCII 編碼,它僅僅對 10 個數字、26 個大小寫英文字母以及一些特殊字符進行瞭編碼。ASCII 碼做多隻能表示 256 個符號,每個字符隻需要占用 1 個字節。
隨著信息技術的發展,各國的文字都需要進行編碼,於是相繼出現瞭 GBK
、GB2312
、UTF-8 編碼等,其中 GBK 和 GB2312 是我國制定的中文編碼標準,規定英文字符母占用 1 個字節,中文字符占用 2 個字節;而 UTF-8 是國際通過的編碼格式,它包含瞭全世界所有國傢需要用到的字符,其規定英文字符占用 1 個字節,中文字符占用 3 個字節。
Python 3.x 默認采用 UTF-8 編碼格式,有效地解決瞭中文亂碼的問題。
在 Python
中,有 2 種常用的字符串類型,分別為 str
和 bytes
類型,其中 str 用來表示 Unicode 字符,bytes 用來表示二進制數據。str 類型和 bytes
類型之間就需要使用 encode()
和 decode()
方法進行轉換。
1.Python encode()方法
encode()
方法為字符串類型(str
)提供的方法,用於將 str 類型轉換成 bytes 類型,這個過程也稱為“編碼”。
encode() 方法的語法格式如下:
str.encode([encoding="utf-8"][,errors="strict"])
註意:格式中用 [] 括起來的參數為可選參數,也就是說,在使用此方法時,可以使用 [] 中的參數,也可以不使用。
該方法各個參數的含義如表 1 所示。
表 1 encode()參數及含義:
參數 | 含義 |
---|---|
str | 表示要進行轉換的字符串。 |
encoding = “utf-8” | 指定進行編碼時采用的字符編碼,該選項默認采用 utf-8 編碼。例如,如果想使用簡體中文,可以設置 gb2312。
當方法中隻使用這一個參數時,可以省略前邊的“encoding=”,直接寫編碼格式,例如 str.encode(“UTF-8”)。 |
errors = “strict” | 指定錯誤處理方式,其可選擇值可以是:
該參數的默認值為 strict。 |
註意:使用 encode() 方法對原字符串進行編碼,不會直接修改原字符串,如果想修改原字符串,需要重新賦值。
【例 1】將 str 類型字符串“C語言中文網”轉換成 bytes 類型。
>>> str = "C語言中文網" >>> str.encode() b'C\xe8\xaf\xad\xe8\xa8\x80\xe4\xb8\xad\xe6\x96\x87\xe7\xbd\x91'
此方式默認采用 UTF-8 編碼,也可以手動指定其它編碼格式,例如:
>>> str = "C語言中文網" >>> str.encode('GBK') b'C\xd3\xef\xd1\xd4\xd6\xd0\xce\xc4\xcd\xf8'
2.Python decode()方法
和 encode()
方法正好相反,decode()
方法用於將 bytes
類型的二進制數據轉換為 str 類型,這個過程也稱為“解碼”。
decode() 方法的語法格式如下:
bytes.decode([encoding="utf-8"][,errors="strict"])
該方法中各參數的含義如表 2 所示。
表 2 decode()參數及含義:
參數 | 含義 |
---|---|
bytes | 表示要進行轉換的二進制數據。 |
encoding=”utf-8″ | 指定解碼時采用的字符編碼,默認采用 utf-8 格式。當方法中隻使用這一個參數時,可以省略“encoding=”,直接寫編碼方式即可。
註意,對 bytes 類型數據解碼,要選擇和當初編碼時一樣的格式。 |
errors = “strict” | 指定錯誤處理方式,其可選擇值可以是:
該參數的默認值為 strict。 |
【例 2】
>>> str = "C語言中文網" >>> bytes=str.encode() >>> bytes.decode() 'C語言中文網'
註意:如果編碼時采用的不是默認的 UTF-8 編碼,則解碼時要選擇和編碼時一樣的格式,否則會拋出異常,例如:
>>> str = "C語言中文網" >>> bytes = str.encode("GBK") >>> bytes.decode() #默認使用 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語言中文網'
到此這篇關於Python字符串編碼轉換 encode()
和decode()
方法詳細說明的文章就介紹到這瞭,更多相關Python encode()和decode()方法內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- python字符串常規操作大全
- Python編解碼問題及文本文件處理方法詳解
- Python有關Unicode UTF-8 GBK編碼問題詳解
- jupyter讀取錯誤格式文件的解決方案
- 解決python中文亂碼問題方法總結