廢了那么多的章節(jié)講字符編碼,最終只需要記住一個結論就行了,關于前兩個階段的亂碼問題,我們只需要加上文件頭就解決了。
這個文件頭指定的編碼方式,就指定成你保存文件時用的編碼就可以了。
a = '人'
這個變量值是直接存成了Unicode格式的對吧,前面我們提過,Unicode轉成其他編碼格式,這個過程我們叫編碼,然后其他編碼轉成Unicode我們叫解碼。
這個a下面有個方法叫encode。
這個方法叫編碼,然后我傳一個參數(shù)GBK給它。
a.encode('gbk')
這就是把Unicode轉成了GBK,然后用一個變量值來接收這個返回值,再打印一下這個res。
res = a.encode('gbk')
print(res, type(res))
我們可以在網(wǎng)上找到,人這個字的Unicode編碼轉成GBK格式,Unicode是4EBA,轉成GBK就是484B。
但是它真正存到硬盤里面,是需要加上標識頭的,結果應該是C8CB,我們打印出來的是一樣的。
前面還有個小寫的b,我們再來打印下類型看。
Unicode編碼成其他格式,這個類型就叫bytes類型。
那Unicode轉換成這種byets類型有什么用呢?說白了這個類型就是一串GBK格式的二進制嘛,只是我們打印出來看到的是16進制的,其實本質就是一串二進制數(shù)。
這串二進制數(shù)第一個用途就是可以寫入到硬盤里去。
第二個用途就是可以研網(wǎng)絡進行傳輸,比如你寫的程序要和其他老的平臺進行數(shù)據(jù)交互,老平臺可能只識別GBK。
這時候我們python3的Unicode就不能直接傳給對方了,要encode成GBK或者其他老平臺支持的編碼方式當然你也可以去嘗試encode程UTF-8或者其他的都行。
好了,回歸正題。
這個GBK我想轉成Unicode就要對它進行解碼了。
print(res.decode('gbk'))
解碼也是按GBK來解,再打印一下。
打印出來,又變成了人這個字符了。
關于字符編碼的相關知識,到這里簡單的就全部介紹完畢了,接下來要學習的就是怎么用python來操作文件。
未經(jīng)允許不得轉載:445IT之家 » Python 編碼與解碼