在文档元素内容中发现了一个无效的XML字符(Unicode:0x0)错误。

3
我有一个XML文件,在解析时出现以下错误: 在文档元素内容中发现了无效的XML字符(Unicode: 0x0)错误。
我可以正常读取整个文件,也没有控制字符。
但是,当我手动输入整个内容而不是使用提供给我的文件时,它可以正常工作。
可能的问题是什么?我在SO上阅读了一些类似的问题,他们都说这可能是编码问题。但是,有人能详细说明一下吗?因为我可以完全读取整个文件。如果这是编码问题,我如何通过查看文件来知道呢?因为它看起来很好。它是可读的。我删除了一行并手动输入它,那一行被正确解析了。
提前感谢。
1个回答

3
有两种可能的解释。要么文件包含正确编码的Unicode代码点0x0的实例,但XML不允许此字符。
另一种可能是,解析器认为它看到了0x0的实例,因为它错误地解码了文件的物理字节:也就是说,XML解析器所假定的编码并非文件的实际编码。
当你处理这种问题时,需要非常小心类似“我可以读取整个文件”和“看起来没问题”的短语。实际上你无法看到硬盘上的位,只能使用某种查看工具来解释它们,而且你需要清楚你使用的是什么工具以及它的配置方式。

请原谅我在问题中使用的措辞,我只是想让它更容易理解。我认为解析器和实际编码存在不匹配的情况。但我希望有一种更容易检测到这种情况的方法。而不是通过解析器告诉我无法解析,然后我猜测是编码问题,并重新编写整个程序。 - Nick Div
好的,第一步是在十六进制编辑器中查看文件的二进制级别。快速浏览可以大大缩小需要调查的可能原因集合。 - Michael Kay

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接