setdefaultencoding函数使用详解
sys.getdefaultencoding()是設置默認的string的編碼格式,如果你在python中進行編碼和解碼的時候,不指定編碼方式,那么python就會使用defaultencoding。
而python2.x的的defaultencoding是ascii,這也就是大多數python編碼報錯:“UnicodeDecodeError: ‘ascii’ codec can’t decode byte …”的原因。
與此有類似功能的# coding:utf-8 作用是定義源代碼的編碼. 如果沒有定義, 此源碼中是不可以包含中文字符串的.
注意:python2.7以后setdefaultencoding就廢棄掉了,所以在python3.x中不可使用
代碼實例:
#!/usr/bin/env python #encoding: utf-8 import sys #引用sys模塊進來,并不是進行sys的第一次加載 reload(sys) #重新加載sys sys.setdefaultencoding('utf8') ##調用setdefaultencoding函數可以正確的執行,可是下面的代碼會出錯
#!/usr/bin/env python #encoding: utf-8 import sys sys.setdefaultencoding('utf8')要在調用setdefaultencoding時必須要先reload一次sys模塊,因為這里的import語句其實并不是sys的第一次導入語句,也就是說這里其實可能是第二、三次進行sys模塊的import,這里只是一個對sys的引用,只能reload才能進行重新加載。
那么為什么要重新加載,而直接引用過來則不能調用該函數呢?因為setdefaultencoding函數在被系統調用后被刪除了,所以通過import引用進來時其實已經沒有了,所以必須reload一次sys模塊,這樣setdefaultencoding才會為可用,才能在代碼里修改解釋器當前的字符編碼。
在python安裝目錄的Lib文件夾下,有一個叫site.py的文件,在里面可以找到main() --> setencoding()–>sys.setdefaultencoding(encoding),因為這個site.py每次啟動python解釋器時會自動加載,所以main函數每次都會被執行,setdefaultencoding函數一出來就已經被刪除了。
總結
以上是生活随笔為你收集整理的setdefaultencoding函数使用详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python网络编程——IO多路复用之e
- 下一篇: 详解python的super()的作用和