...特别是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接受字符编码?
答案 0 :(得分:2)
此答案基于您的XML文件不包含字符实体£
但字节值0xa3
的假设。
井号的UTF-8代码是双字节代码0xc2 0xa3
。如果0xc2
之前没有字节0xa3
,则XML文件的编码不是UTF-8,并且标题信息错误。
如果是这种情况,您可以将XML标头中的编码更改为ISO 8859-1(可以在代码点0xa3
找到井号),或者尝试找出XML文件的原因不是UTF-8编码并修复它们。由于我不知道您的文件是否包含ISO 8859-1中不存在的任何字符,我更倾向于第二种选择。