1. 程式人生 > >UnicodeDecodeError: 'ascii' codec can't decode byte 0xd3 in position 1: ordinal not in range(128)

UnicodeDecodeError: 'ascii' codec can't decode byte 0xd3 in position 1: ordinal not in range(128)

用Python呼叫畫圖模組matplotlib的時候,執行老是報錯:“UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xd3 in position 1: ordinal not in range(128)”。網上都是說字元編碼問題,最常見的解決方法是,在指令碼開頭加上這樣的程式碼:

import sys
reload(sys)
sys.setdefaultencoding('utf8')

然而這對我的問題並沒有什麼卵用。參看了很多的網上的解決方案,花了很長時間,都沒什麼用。前後一個花掉接近三個小時。產生了一事無成的挫敗感。

最後還是自己想到了問題的答案:中!文!路!徑!

由於我的指令碼存放的路徑中有中文,這對普通Python指令碼沒什麼問題,但是對Python的一些外掛就有問題了。matplotlib更是對此甚是敏感。

解決方案:把指令碼放在純英文路徑下面:搞定。

感悟:我們有時候遇到問題總習慣把報錯資訊直接貼到網上,然後按照網上的方法去解決,如果解決不了,就抓狂了。而且,越急,就越不動腦筋。其實,應該自己動一動腦子的。這讓我想到了劉未鵬《暗時間》中也曾經有過同樣的描述。