从XML中筛选某些unicode字符
本文关键字:unicode 字符 筛选 XML | 更新日期: 2023-09-27 17:59:45
。。。特别是xA3(磅
我正在加载几个长的XML文档,并定期遇到一个无法加载的文档,抛出异常:
给定编码中的字符无效。行x,位置y。
这是有问题的代码:
var doc = new XmlDocument();
doc.Load(file.FullName);
当我在所示的行中查看有问题的文档时,我会在其中一个XML标记中看到反格式的xA3(黑色bg,白色fg)。
每个XML文件的头都没有什么特别之处:
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
这听起来可能是一个非常愚蠢的问题,但有没有办法删除有问题的字符,或者告诉读取文件的XMLDocument接受字符编码?
此答案基于这样的假设,即XML文件不包含字符实体£
,而是包含字节值0xa3
。
英镑符号的UTF-8代码是两字节代码0xc2 0xa3
。如果0xa3
之前没有字节0xc2
,则XML文件的编码不是UTF-8,并且标头信息是错误的。
如果是这种情况,您可以将XML标头中的编码更改为ISO 8859-1(在代码点0xa3
可以找到磅号),或者尝试找出XML文件不是UTF-8编码的原因并修复它们。由于我不知道你的文件是否包含ISO 8859-1中不存在的任何字符,我更喜欢第二个选项。