字符編碼的理論我們講完了,現(xiàn)在我們實踐驗證一下,在python程序的運行過程中,怎么保證亂碼問題。
我們運行python程序的過程中,不管是借助了python還是其他工具,本質(zhì)就是在命令行里敲了python解釋器,然后跟上Python文件的路徑。
我們執(zhí)行這個py文件之前,首先得寫好這個python文件對吧!
我們寫python程序就得用文本編輯工具,現(xiàn)在我們使用的pycharm就是一個文本編輯器。
現(xiàn)在我新建一個test.py文件,然后看屏幕的右下角。
顯示了一個UTF-8,然后我們點擊它,就就可以選擇GBK。
現(xiàn)在我們就把字符編碼改掉了,這里要注意我們改的編碼方式是改的存到硬盤的方式,而不是內(nèi)存的。
然后我在這里先寫一個注釋。然后隨便print一點東西。
現(xiàn)在這段代碼在內(nèi)存里面是轉(zhuǎn)成了Unicode格式的二進制了,接著保存。
保存的這個過程就是由內(nèi)存了的Unicode編碼,轉(zhuǎn)成了我們指定的GBK編碼,然后丟到硬盤里面去了。
現(xiàn)在在硬盤里存的是這段代碼的GBK格式的二進制。
現(xiàn)在這個程序的開發(fā)我們已經(jīng)做完了,然后我們現(xiàn)在試試把這個pycharm當(dāng)做一個普通的文本編輯器,運行這個程序我們還是到命令行里面。
首先把這個文件的絕對路徑復(fù)制一下。
然后放到cmd環(huán)境下運行。
前面我們說過,運行python程序有三個階段,第一個階段就是python解釋器先啟動,這時候就相當(dāng)于啟動了一個文本編輯器。
第二個階段就是這個文本編輯器要把硬盤的這個文件內(nèi)容,由硬盤讀入到內(nèi)存,注意內(nèi)存的編碼是Unicode編碼的。所以這個文本編輯器會把這個文件內(nèi)容轉(zhuǎn)成Unicode。
第三個階段其實按道理,當(dāng)時按照什么編碼方式存的這個文件,現(xiàn)在就應(yīng)該按照什么編碼方式來取。所以應(yīng)該按照GBK編碼來轉(zhuǎn)成Unicode編碼。
但是我們根本就不沒告訴python解釋器要用GBK來轉(zhuǎn),那么到底我們的python解釋器會默認(rèn)把這個文件按照什么編碼方式來轉(zhuǎn)成Unicode呢?
敲回車,我們發(fā)現(xiàn)報錯了。
報錯內(nèi)容說語法錯誤,好像UTF-8出什么問題了。
現(xiàn)在我們猜也應(yīng)該猜到了,我們現(xiàn)在用的這個python解釋器默認(rèn)讀文件的編碼就是UTF-8。
那么我們怎么來告訴python解釋器不要用它默認(rèn)的編碼方式來讀取文件,而是要用我告訴它的編碼方式呢?
未經(jīng)允許不得轉(zhuǎn)載:445IT之家 » 零基礎(chǔ)Python到全棧-py文件亂碼問題