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