2017-06-29 89 views
1

我試圖打開下列方式文件:抓「UTF-8」編解碼器不能在位置X解碼字節X:無效的起始字節

file = open(filename, 'r', encoding='utf-8', errors='strict') 

但所有我得到的是下面的錯誤消息:

'utf-8' codec can't decode byte 0xa9 in position 75: invalid start byte 

所以我想,我們捕獲的錯誤,讓我們回退到errors=ignore下列方式:

try: 
    file = open(filename, 'r', encoding='utf-8', errors='strict') 
except UnicodeError as decode_error: 
    file = open(filename, 'r', encoding='utf-8', errors='ignore') 

但沒有,我總是得到相同的錯誤信息,似乎我無法捕捉到錯誤。我也嘗試過OSError, IOError, UnicodeDecodeError, RuntimeError, Exception

回答

1

打開文件不會讀取它。因此,open永遠不會拋出UnicodeDecodeError。嘗試讀取文件。

當文件不存在時(FileNotFoundError)或者當您沒有足夠的權限時(PermissionError),將打開該文件。

您必須在應用程序的其他位置捕獲UnicodeDecodeError。這就是說,如果你準備無視Unicode解碼錯誤,那麼沒有理由首先打開errors='strict'文件。

相關問題