从XML中过滤某些unicode字符

时间:2016-08-02 23:27:34

标签: c# xml unicode

...特别是xA3(& pound,&#xa3,&#163)

我正在加载几个很长的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接受字符编码?

1 个答案:

答案 0 :(得分:2)

此答案基于您的XML文件不包含字符实体&#xa3;但字节值0xa3的假设。

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

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