python版本: python2.7.6
#查看python默認編碼格式
>>> import sys >>> print sys.getdefaultencoding() #python 2.x 默認編碼是ascii格式; python 3.x 默認編碼是utf-8格式 ascii
#設置python默認的編碼格式
>>> import sys >>> print sys.setdefaultencoding('utf-8')
操作如下:
>>> import sys >>> sys.getdefaultencoding() 'ascii' >>> reload(sys) >>> sys.setdefaultencoding('utf-8') >>> tmp = ('中國','英國') >>> tmp >>> print tmp >>>
如上面的操作所示:設置python編碼格式后,print失效了,沒有任何輸出。
解決方法1: 在python代碼中進行改變
import sys reload(sys) sys.setdefaultencoding('utf-8') #注意:使用此方式,有極大的可能導致print函數無法打印數據! #改進方式如下: import sys #這里只是一個對sys的引用,只能reload才能進行重新加載 stdi,stdo,stde=sys.stdin,sys.stdout,sys.stderr reload(sys) #通過import引用進來時,setdefaultencoding函數在被系統調用后被刪除了,所以必須reload一次 sys.stdin,sys.stdout,sys.stderr=stdi,stdo,stde sys.setdefaultencoding('utf-8')
說明:手動執行了reload(sys)以后,sys模塊的這三個變量將會被重置,導致輸出無法顯示在IDLE。
所以解決方案很簡單,只需要在reload之前把這三個變量都復制一份,reload之后再恢復回來就行了:
解決方法2:python安裝目錄下的lib\site-packages文件夾下新建一個sitecustomize.py。 #推薦此方法
import sys sys.setdefaultencoding('utf-8')
這樣在python文件中就不用在import模塊后添加
reload(sys)
sys.setdefaultencoding('utf8')
這兩句話了,也不用擔心print失效的問題
參考資料:
python 保存文件UnicodeEncodeError以及reload(sys)后print失效問題: http://blog.csdn.net/u012340798/article/details/49230379
python 中的setdefaultencoding函數使用: http://blog.csdn.net/zhengalen/article/details/51221199
Python IDLE reload(sys)后print無法正常執行命令的原因: http://blog.csdn.net/chaoshengmingyue/article/details/51834468
Python 設置系統默認編碼: http://blog.csdn.net/intel80586/article/details/8566057