python reload(sys)找不到,name 'reload' is not defined


  • 在操作數據庫的時候遇到這個問題,為什么會出現這種原因?查詢如下:
  • python在安裝時,默認的編碼是ascii,當程序中出現非ascii編碼時,python的處理常常會報這樣的錯UnicodeDecodeError: 'ascii' codec can't decode byte 0x?? in position 1: ordinal not in range(128),python沒辦法處理非ascii編碼的,此時需要自己設置將python的默認編碼,一般設置為utf8的編碼格式。
    具體原因傳送門:https://www.jianshu.com/p/9686bfa7e81c

  • 解決辦法:
  • 首先看一下自己使用的python版本,python2 和 python3 處理的方法不同
  • python2解決辦法,加上如下代碼,
  • import sys 
    reload(sys) 
    sys.setdefaultencoding(‘utf-8’) 
    

      

  • python3解決辦法,加上如下代碼,
  • import importlib,sys 
    importlib.reload(sys)
    

      

  • 說明:
  • 在Python2.x中由於str和byte之間沒有明顯區別,經常要依賴於defaultencoding來做轉換。 
  • 在python3中有了明確的str和byte類型區別,從一種類型轉換成另一種類型要顯式指定encoding。

 

  • 問題解決!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM