我們怎么來告訴python解釋器不要用它默認(rèn)的編碼方式來讀取文件,而是要用我告訴它的編碼方式呢?
這時候我們就要給這個python文件,指定一個文件頭,修改默認(rèn)的編碼。
指定這個文件頭的方式就是,在python文件的首行寫# coding:GBK。
# coding:GBK
注意一定要寫在首行,因為接下來你所有的代碼,都是參照首行指定的編碼方式讀取,然后轉(zhuǎn)成Unicode編碼的。
而且這個文件頭負(fù)責(zé)的是讀文件的編碼方式,它管不了存文件的編碼方式。
真正管存文件編碼方式的是編輯器,如果你搞不清楚當(dāng)初存文件時候用的什么編碼,那你就只能蒙了。蒙對了還好,蒙錯了就一定會亂碼。
現(xiàn)在這個編碼方式我指定好了,然后我們再來到命令行試試看。
敲上下方向鍵,就可以切換上次輸入的命令,敲回車。
這個程序就成功運行了。
那我們平時練習(xí)的時候也沒有指定文件頭,為什么也沒亂碼呢?
還記得我們一開始新建這個test.py文件之后,第一步做了什么嗎?我們是把默認(rèn)的UTF-8改成了GBK。
也就是說pycharm默認(rèn)就幫我們把文件保存成了UTF-8格式了,而python3默認(rèn)也是用UTF-8讀取文件的。
所以我們平時沒有遇到亂碼問題,并不是說你解決了亂碼問題,而是說你碰巧蒙對了,所以你寫的程序兼容性更好,python3可以執(zhí)行,python2也可以執(zhí)行,就應(yīng)該給你的python文件加上一個文件頭,指定一下編碼方式。
而這個指定的編碼方式,就是你當(dāng)初用什么編碼方式存的,這里就應(yīng)該要指定什么編碼方式。
當(dāng)然這個#后面空格可以加也可以不加,都沒問題。
雖然這是注釋的語法,但是這樣寫到首行就不單單是注釋了,還有表示文件頭的作用。
現(xiàn)在我們就把python程序運行過程中,前兩個階段的亂碼問題解決了,只要指定文件頭,把讀文件的時候用編碼方式,指定成你存入硬盤時用的編碼方式就可以了。
最后我再和你說一個pycharm很牛B的功能。
Pycharm為了保持一致性,你在文件頭寫什么,它右下角都會保持一直,你上面寫GBK,右下角就會變成GBK。
你可以自己試一下。
未經(jīng)允許不得轉(zhuǎn)載:445IT之家 » python 用指定編碼方式來讀取文件