欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

关于XML解析报错问题(LF、CRLF)

发布时间:2024/1/1 65 豆豆
生活随笔 收集整理的这篇文章主要介绍了 关于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)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。