Python: 讀取文件開頭出現\ufeff - 羔羊的實驗紀錄簿

文章推薦指數: 80 %
投票人數:10人

今天讀取影像感測器存出來的參數時,發現讀進來的檔案多了 \ufeff 這個 ... 當文件儲存 utf-8 編碼時,有包含BOM (檔首),此時直接用 utf-8 格式去讀 ... Home Blog Profile Github Home Blog Profile Github 羔羊的實驗紀錄簿 程式|生活隨筆 分類 C/C++ C# DIY FDTD MachineLearning DeepLearning PySide2/PyQt5 Python 光學 影像處理 日常隨筆 網站相關 Bootstrap CSS JavaScript PHP WordPress 開發板 Arduino Beaglebone 羔羊的實驗紀錄簿 程式|生活隨筆 分類 C/C++ C# DIY FDTD MachineLearning DeepLearning PySide2/PyQt5 Python 光學 影像處理 日常隨筆 網站相關 Bootstrap CSS JavaScript PHP WordPress 開發板 Arduino Beaglebone 前言 今天讀取影像感測器存出來的參數時,發現讀進來的檔案多了\ufeff這個東西,也因為這樣我的程式一直錯誤不能成功執行。

解決辦法 當文件儲存utf-8編碼時,有包含BOM(檔首),此時直接用utf-8格式去讀取,第一個字元就會出現\ufeff。

這是因為存下來的格式跟我讀取時所設定的編碼格式不同才導致,解決方法就是設定成utf-8-sig,就會自動去掉\ufeff了。

應用範例 下面這個程式是我用來讀取INI組態設定檔的程式 fromconfigparserimportConfigParser defload_cfg(cfg_file): config={} f=ConfigParser() f.read(cfg_file,encoding="utf-8-sig")#"utf-8"-->"utf-8-sig" sections=f.sections() forsectioninsections: config[section]={} options=f.options(section) foropinoptions: config[section][op]=null_proc(f.get(section,op)) returnconfig 一開始我是照平常使用f.read(cfg_file,encoding="utf-8")來讀取,因為錯誤編碼讀取導致我第一個字元是\ufeff,變成後面程式無法正確判斷設定檔的架構。

之後更改成f.read(cfg_file,encoding="utf-8-sig")之後,就可以正常執行function了。

結語 看來有機會可以研究看看怎麼自動判斷編碼格式的功能。

留下一個回覆取消回覆發佈留言必須填寫的電子郵件地址不會公開。

必填欄位標示為*顯示名稱* 電子郵件地址* 個人網站網址 在瀏覽器中儲存顯示名稱、電子郵件地址及個人網站網址,以供下次發佈留言時使用。

評論



請為這篇文章評分?