在學習讀取csv文件讀取時,發現一個問題:網上學習的代碼比比皆是,可是舉例中csv文件都不存在中文(好多說不支持中文),所以在嘗試含有中文讀取時(就是不死心,哈哈),發現了幾個報錯,在度娘的幫助下已順利解決。下面就總結下解決過程。
1、csv文件:
2、在紅黑聯盟中看到了讀取csv文件的介紹,於是寫了第一次代碼:
運行結果:
從報錯中可以看出csv文件並非二進制文件, 只是一個文本文件
3、於是,修改成以下代碼
運行結果:
報錯提示“utf-8”編解碼器無法解碼位置22中的字節0xc7,說明該csv文件未使用utf-8編碼,因此無法使用utf-8編碼器打開它。
4、於是,將文件另存,選擇保存類型為:CSV UTF-8(逗號分隔)
再運行代碼,結果如下:
從結果可以看出,中文已正常顯示,但是第1行第1列中多顯示了‘\ufeff’這個東東。
然后就了解了utf-8與utf-8-sig兩種編碼格式的區別:
As UTF-8 is an 8-bit encoding no BOM is required and anyU+FEFF character in the decoded Unicode string (even if it’s the firstcharacter) is treated as a ZERO WIDTH NO-BREAK SPACE.
UTF-8以字節為編碼單元,它的字節順序在所有系統中都是一樣的,沒有字節序的問題,也因此它實際上並不需要BOM(“ByteOrder Mark”)。但是UTF-8 with BOM即utf-8-sig需要提供BOM。
緊接着,將代碼改成如下樣子:
運行結果: