在處理中文數據,經常加入下面的代碼:
import sys reload(sys) sys.setdefaultencoding("utf8")
設置python默認字節流編/解碼器按照utf8解碼方式,把字節流編/解碼為unicode;
具體來說,所起到的作用,可以用下面兩個錯誤來解釋:
- 在將字節流使用str()方法轉換為str對象時,會調用默認的encode函數,如果沒有上述系統的默認編碼設置,則自動使用'ascii' codecs進行編碼,對於非ascii編碼的數據,比如utf8字節流會產生錯誤解碼提示:
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-5: ordinal not in range(128)
2.在utf8編碼文件中寫入漢字字符, 比如 s = '中文'時, 如果沒有上述設置,運行程序會在初始s對象的值,報告錯誤解碼提示:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe4 in position 0: ordinal not in range(128)
