从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中筛选某些unicode字符

此答案基于这样的假设,即XML文件不包含字符实体&#xa3;,而是包含字节值0xa3

英镑符号的UTF-8代码是两字节代码0xc2 0xa3。如果0xa3之前没有字节0xc2,则XML文件的编码不是UTF-8,并且标头信息是错误的。

如果是这种情况,您可以将XML标头中的编码更改为ISO 8859-1(在代码点0xa3可以找到磅号),或者尝试找出XML文件不是UTF-8编码的原因并修复它们。由于我不知道你的文件是否包含ISO 8859-1中不存在的任何字符,我更喜欢第二个选项。