UnicodeDecodeError異常
UnicodeDecodeError: 'utf8' codec can't decode byte 0xb2 in position 154: invalid start byte
從報錯日志找問題,很顯然不太適合去utf-8.py這里去做改動,因為這是個比較公共的庫了,那么找到前一處報錯,是在Python27\Lib\site-packages\robotide\contrib\testrunner下的testrunner.py文件的第400行pop方法里的這一句:
return result.decode('UTF-8')
那我們進入這個目錄:
D:\Python\Lib\site-packages\robotide\contrib\testrunner
用Python的IDLE打開testrunner.py,其他工具最好是Python常用的IDE,避免用文本工具改的縮進有問題,如果你改完后發現報錯信息是IndentationError: unexpected indent,通常就是縮進有問題。
在源碼文件里找到這個pop函數,可以看到出錯的那行語句:
加個try catch:
注意try是和for對其的,這里的代碼如下:
try:
result = result.decode('UTF-8')
except UnicodeDecodeError:
pass
return result
主要作用就是判斷出現了UnicodeDecodeError的異常的時候,直接用pass過濾,然后不做decode,直接return result,當然如果沒有異常,那么原先的decode邏輯已經做了,所以可以解決掉前面日志不見的問題。
# (替換后,刪除testrunner.pyc文件,然后重新打開RIDE,可恢復正常。)