1. 程式人生 > >真正解決python UnicodeDecodeError: ‘ascii’ codec can’t decode byte ……

真正解決python UnicodeDecodeError: ‘ascii’ codec can’t decode byte ……

相信很多人跟我一樣 在用python處理一些字串的時候遇到過這樣的問題:(csdn問題…圖片上的網址請自行忽略)


然後遇到這種問題了之後左改右改發現依然有這個問題

……

………

但是最後,仔細閱讀了python的官方文件在內的多處網站後發現

還有print sys.getdefaultencoding() 獲取系統預設編碼這一說!…

對於windows下的預設編碼好像都是ascii(?這個沒經過驗證)

因為預設是ascii的原因 字串在執行下面這個例子是就會報UnicodeDecodeError

#-*- encoding:utf-8 -*-
s = '你好 中文'
s.encode('utf-8')
原因是因為系統會在執行decode('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錯誤的問題就已經解決了