真正解決python UnicodeDecodeError: ‘ascii’ codec can’t decode byte ……
阿新 • • 發佈:2019-02-18
相信很多人跟我一樣 在用python處理一些字串的時候遇到過這樣的問題:(csdn問題…圖片上的網址請自行忽略)
然後遇到這種問題了之後左改右改發現依然有這個問題
…
……
………
但是最後,仔細閱讀了python的官方文件在內的多處網站後發現
還有print sys.getdefaultencoding() 獲取系統預設編碼這一說!…
對於windows下的預設編碼好像都是ascii(?這個沒經過驗證)
因為預設是ascii的原因 字串在執行下面這個例子是就會報UnicodeDecodeError
原因是因為系統會在執行decode('utf-8')之前加入預設的解碼 其實就變成了下面的語句#-*- encoding:utf-8 -*- s = '你好 中文' s.encode('utf-8')
#-*- encoding:utf-8 -*-
s = '你好 中文'
s.decode('ascii').encode('utf-8')
解決方法就是讓他預設執行的decode('ascii')執行為decode('utf-8')
有get方法自然也可能有set方法 但是經過測試sys.setdefaultencoding('utf-8')卻不存在
這個原因是import 並不是sys的第一次匯入語句 只是對sys的一個引用(文章不是講解import的不做過多解釋)
所以最終找到解決方法就是在程式開頭(至少要在報錯語句前面 但是越早的話出現問題的可能性越小)加入如下語句:
#-*- encoding:utf-8 -*-
import sys #reload()之前必須要引入模組
reload(sys)
sys.setdefaultencoding('utf-8')
到此在寫的程式中沒有問題的情況下無故報UnicodeDecodeError錯誤的問題就已經解決了