python3字串編碼和解碼

2021-09-13 19:36:38 字數 1731 閱讀 1571

雖然這是乙個很基礎的問題,但是博主一直都是瞎貓碰死耗子的心態去試,因為對於中文就那麼幾種encode方式 - -!

編碼解碼

一般來說由一種字串變成二進位制串的過程叫encode;反之稱為decode

通常我們寫乙個文件時,無論是通過word / pycharm / notepad++這些,都會有乙個東西叫解碼方式,出現在右下角,並且選不好就出現亂碼。

why?

首先,我們知道字串存在硬碟中,實際上存放的是二進位制數,那怎麼存放二進位制數,二進位制怎麼對應起我們想要的字元,這就通過了我們規定的編碼規則了。

我們通過輸入法,輸入的字串到硬碟二進位制的過程叫encode;開啟二進位制檔案在編輯器中顯示字元的過程叫decode

這是對於檔案編輯器來說。

python3字元

python3檔案中只有兩種字元str型和bytes

其中bytes就是二進位制串的十六進製制表示,str在python3是unicode標準並且可以選擇不同編碼表示,如utf-gbkiso-等。

可以在python**的首行指定# -*- coding:gbk -*-,或者在pycharm的右下角選擇

關於unicode這些,可以看:

其實你把python檔案當成乙個普通的字元檔案就很容易理解上面的東西了。

只不過python因為可以呼叫函式實現encode和decode的操作。

看看python3如何指定解碼方式讀取文件

特地用gbk寫了乙個test檔案,只有一行:

i love 中國!

**:

# -*- coding:gbk -*-

a ='i love 中國!'

print

(a.encode(

'gbk'))

print

(a.encode(

'utf-8'))

with

open

('test_en_decode'

,'rb'

)as f:

a = f.readlines(

)print

(a)print

(a[0

].decode(

'gbk'

))

結果:

b'i love \xd6\xd0\xb9\xfa!'

b'i love \xe4\xb8\xad\xe5\x9b\xbd!'

[b'i love \xd6\xd0\xb9\xfa!']

i love 中國!

發現gbkutf-兩者編碼方式不一樣,得到的二進位制串結果也不一樣。

並且'rb'方式open最後得到得結果也可以進行對應編碼方式得decode,而不出現亂碼。

至於為什麼python在encode後,英文本元不是二進位制串,應該是編譯器列印時,ascii能對應得就轉換了

.#

Python 3「字串和編碼「

python3 字串是以unicode編碼 字元的表示轉換函式 str變為bytes方法 bytes變為str方法 注意!中文不能轉為ascii編碼 len 函式 儲存源 時,通常要在檔案開頭加上兩行 usr bin env python3 coding utf 8 格式化 小明的成績從去年的72分...

python3 字串編碼相關

編碼型別很多,常見的例如 ascii碼 最早被編入計算機中的,長度是128,主要是為了解決英文本元 gb2312 中國人編碼的,為了解決中文 unicode 統一多種編碼方式,降低亂碼 utf 8 unicode的改進版,節省編碼長度 python3預設編碼方式是 utf 8 編碼方式相互轉換 de...

python3自學筆記3 字串和編碼

摘錄自 廖雪峰python3.5教程 內容 字串和編碼 目錄 一 字元編碼的發展 二 python的字串 正文 一 字元編碼的發展 美國人在發明計算機編碼時只將大小寫英文本母 數字和一些符號共127個字母編碼到計算機中,稱為ascaii編碼。最早的計算機以8個位元為乙個位元組,所以乙個位元組能表示最...