我們使用Pandas的時候,存儲為csv文件的時候,經常會出現亂碼的情況,原因在於Windows使用BOM來標記文本文件的編碼方式的。UTF-8編碼的文件中,BOM佔三個字節。用UE打開這個文件,切換到十六進位編輯狀態就可以看到開頭的FFFE了。Office、WPS這類軟體通過BOM來識別這個文件是否是UTF-8編碼,很多軟體還要求讀入的文件必須帶BOM。
utf08-sig總結"utf-8"是以字節為編碼單元,它的字節順序在所有系統中都是一樣的,沒有字節序問題,因此它不需要BOM,所以當用"utf-8"編碼方式讀取帶有BOM的文件時,它會把BOM當做是文件內容來處理, 也就會發生類似上邊的錯誤。
"uft-8-sig"中sig全拼為 signature 也就是"帶有籤名的utf-8", 因此"utf-8-sig"讀取帶有BOM的"utf-8文件時"會把BOM單獨處理,與文本內容隔離開,也是我們期望的結果。
明天我們來講解一下Python unicode編碼轉換(py->pyc)為gbk或者utf-8過程,你會對編碼知識有更深入的了解。
希望大家可以慢慢領悟!:)
大家一起加油!
本文相關閱讀推薦:
《Python數據結構》堅持用心輸出技術文章,陪你一起,用知識啟迪身心,探索這個世界,創造這個世界,充實這個世界。
如果喜歡我的文章,點個」在看「吧