當你解碼,只是通過「忽略」剝離這些字符
有剝離的一些方法/轉換那些
'replace': replace malformed data with a suitable replacement marker, such as '?' or '\ufffd'
'ignore': ignore malformed data and continue without further notice
'backslashreplace': replace with backslashed escape sequences (for encoding only)
測試
>>> "abcd\x97".decode("ascii")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0x97 in position 4: ordinal not in range(128)
>>>
>>> "abcd\x97".decode("ascii","ignore")
u'abcd'
來源
2010-03-24 15:18:08
YOU
事實上,你必須知道你的文本是什麼編碼。幾乎沒有辦法解決這個問題。幸運的是,你的錯誤信息很明顯。幾乎可以肯定的是,由於存在0x97字符,你正在處理微軟惱人的cp1252。在拉丁語-1中,此代碼點包含一個幾乎從不使用的控制字符「保護區域結束」。由於0x97不是一個有效的字符前導字節,所以你將永遠不會看到utf-8的這個精確錯誤。另一方面,在cp1252中,這是非常普遍的模式。 – jcdyer 2010-03-24 15:48:27