Python在安裝時,預設的編碼是ascii,當程式中出現非ascii編碼時,python的處理常常會報這樣的錯UnicodeDecodeError: 'ascii' codec can't decode byte 0x?? in position 1: ordinal not in range(128),python沒辦法處理非ascii編碼的,此時需要自己設定将python的預設編碼,一般設定為utf8的編碼格式。
查詢系統預設編碼可以在解釋器中輸入以下指令:
Python代碼
1. >>>sys.getdefaultencoding()
設定預設編碼時使用:
Python代碼
1. >>>sys.setdefaultencoding('utf8')
可能會報AttributeError: 'module' object has no attribute 'setdefaultencoding'的錯誤,執行reload(sys),在執行以上指令就可以順利通過。
此時在執行sys.getdefaultencoding()就會發現編碼已經被設定為utf8的了,但是在解釋器裡修改的編碼隻能保證當次有效,在重新開機解釋器後,會發現,編碼又被重置為預設的ascii了,那麼有沒有辦法一次性修改程式或系統的預設編碼呢。
有2種方法設定python的預設編碼:
一個解決的方案在程式中加入以下代碼:
Python代碼
1. import sys
2. reload(sys)
3. sys.setdefaultencoding('utf8')
另一個方案是在python的Lib\site-packages檔案夾下建立一個sitecustomize.py,内容為:
Python代碼
1. # encoding=utf8
2. import sys
3.
4. reload(sys)
5. sys.setdefaultencoding('utf8')