【问题标题】:Filter certain unicode characters out of XML从 XML 中过滤某些 unicode 字符
【发布时间】:2016-12-08 11:48:35
【问题描述】:

...特别是 xA3 (&pound, £, £)

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

【问题讨论】:

标签: c# xml unicode


【解决方案1】:

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

井号的 UTF-8 代码是两个字节代码 0xc2 0xa3。如果0xa3之前没有字节0xc2,说明你的XML文件编码不是UTF-8,头部信息有误。

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

【讨论】:

  • 感谢您的回答。我不知道这两个字节序列。我也会尝试更改编码。 xa3 是唯一的无效字符,所以我只是删除了有问题的字符。
猜你喜欢
  • 2013-03-20
  • 2016-04-15
  • 2016-04-27
  • 1970-01-01
  • 2012-06-26
  • 2014-10-27
  • 2021-12-10
  • 2010-12-15
  • 1970-01-01
相关资源
最近更新 更多