关于XML解析报错问题(LF、CRLF)
生活随笔
收集整理的這篇文章主要介紹了
关于XML解析报错问题(LF、CRLF)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
報錯內容的主要部分:
UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0x80 in position
123: illegal multibyte sequence
問題產生
在做目標檢測時,使用的數據集來自網絡,在將xml和圖片轉換到特定格式時,有些xml文件解析出現了問題。像這樣:
我發現,當我未使用labelImg工具,而直接通過記事本手動修改xml文件時,或者通過腳本批量修改xml文件時就會出現這個問題。
分析問題
以下為兩個xml文件,里面的內容基本一樣、格式完全相同,仔細觀察發現:
可以正常解析的xml文件編碼格式是LF
而不能正常解析的xml文件編碼格式是CRLF
解釋以下(參考)
- CR:Carriage Return,對應ASCII中轉義字符\r,表示回車
- LF:Linefeed,對應ASCII中轉義字符\n,表示換行
- CRLF:Carriage Return & Linefeed,\r\n,表示回車并換行
眾所周知,Windows操作系統采用兩個字符來進行換行,即CRLF;Unix/Linux/Mac OS X操作系統采用單個字符LF來進行換行;另外,MacIntosh操作系統(即早期的Mac操作系統)采用單個字符CR來進行換行。
解決方法
1 首先我們需要下載一個強大的工具Dos2Unix,下載地址(可能被墻 ) ,百度云(提取碼:e8cj)。
2 配置環境變量,步驟省略。
3 打開命令窗口,開始批量轉換。
在命令窗口輸入
for /R 文件路徑 %G in (*.c *.cc *.h *.xml) do dos2unix "%G" # *.c *.cc *.h *.xml 表示任意匹配這些后綴名的文件當出現以下內容,說明轉換成功:
總結
以上是生活随笔為你收集整理的关于XML解析报错问题(LF、CRLF)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2022的取舍与得失
- 下一篇: asp.net ajax控件工具集 Au