关于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 表示任意匹配这些后缀名的文件

当出现以下内容,说明转换成功:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

望天边星宿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值