我是靠谱客的博主 甜美小蜜蜂,最近开发中收集的这篇文章主要介绍关于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,rn,表示回车并换行

众所周知,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)的全部内容,希望文章能够帮你解决关于XML解析报错问题(LF、CRLF)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部