Python: 讀取文件開頭出現\ufeff - 羔羊的實驗紀錄簿
文章推薦指數: 80 %
今天讀取影像感測器存出來的參數時,發現讀進來的檔案多了 \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了。
結語
看來有機會可以研究看看怎麼自動判斷編碼格式的功能。
留下一個回覆取消回覆發佈留言必須填寫的電子郵件地址不會公開。
必填欄位標示為*顯示名稱*
電子郵件地址*
個人網站網址
在瀏覽器中儲存顯示名稱、電子郵件地址及個人網站網址,以供下次發佈留言時使用。
評論
延伸文章資訊
- 1ufeff的解决方法_51CTO博客
\ufeff的解决方法. 用"utf-8"编码方式读取带有BOM的文件时,它会把BOM当做是文件内容来处理, 也就会发生错误. 解决方法.
- 2Python \ufeff - SYmm 微筆記
在Windows下用文本編輯器創建的文本文件,如果選擇以UTF-8等Unicode格式保存,會在文件頭(第一個字符)加入一個BOM標識。具體去除方法看看下面代碼.
- 3IDE非法字符'\ufeff'报错| UTF8与UTF8-BOM,大端与小端等 ...
BOM. 出于好奇,我们查一下这个编码 \\ufeff 是个什么东东,查询得知,这是一个标识字节存储顺序的编码。 这个涉及到一个名词:BOM。
- 4java讀取文字檔案異常 - 程式人生
百度搜了一下這個uFEFF 原因如下在Windows下用文字編輯器建立的文字檔案,如果選擇以UTF-8等Unicode格式儲存,會在檔案頭(第一個字元)加入一個BOM ...
- 5java utf-8带bom格式内容(带"\uFEFF")转换成utf-8格式
后台导出的txt文件格式为带bom的utf-8。需要判断第一个字符是否是'\uFEFF'. if(inputTaskItem.substring ...