python UnicodeDecodeError: 'utf-8' codec can't decode byte 0xbd in position 0: invalid start byte

UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xbd in position 0: invalid start byte

我遇到該錯誤的地方有兩處:

  • 使用open函數後read數據
f = open('D:/test.csv','r',encoding='utf8')
f.readlines()
  • 使用pandas read_csv時
df = pd.read_csv('D:/test.csv')

  該test.csv是gbk編碼。open時指定了utf8解碼、pd.read_csv應該默認是utf8解碼,所以編碼與解碼方案不對稱。當更改一下解碼方案就解決了,代碼如下,則不會報錯,正常讀取。關於open函數的使用參考鏈接

f = open('D:/test.csv','r')
f.readlines()
df = pd.read_csv('D:/test.csv',encoding='gbk')

  場景說完,我們來解讀錯誤原因。UnicodeDecodeError:Unicode 解碼時的錯誤。 ‘utf-8’ codec can’t decode byte 0xbd in position 0: invalid start byte翻譯:utf8解碼器無法解碼位置0處的0xbd字節,無效的起始字節。

  Unicode爲什麼要解碼?因爲我們的數據存儲時都是二進制,而且是使用了一定編碼方式的二進制。當我們用程序讀取時,就需要將二進制從存儲中拿出來然後使用解碼方案去解碼呈現出人類可讀的數據。當編碼方案與解碼方案不對稱時,就發生解碼錯誤。關於編碼方案與解碼方案的具體種類和細節,我們後面再討論。

  可以使用UltraEdit和notepad++兩個文本編輯器查看和修改文件的編碼。

  So,理解了上面錯誤的原因後,對於下面 ↓ 的“雙胞胎”型錯誤也就迎刃而解了吧!

UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0xab in position 20: illegal multibyte sequen

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章