Woodstox解析器不支持某些unicode字符

时间:2012-03-30 10:05:36

标签: java xml

我是使用WoodStox的新手。我必须阅读所有可能的Unicode字符组合并写入XML文件。 WoodStox无法读取某些Unicode字符。有人可以帮助我如何在遇到时跳过该字符或在XML文件中写入该Unicode字符的解决方案。

我得到的例外是     24364002-data-set-results.xml的第1行第1404735行出错:   SXXP0003:XML解析器报告的错误:字符引用“& #xfffe”是无效的XML字符。 例外情况是:net.sf.saxon.trans.XPathException:org.xml.sax.SAXParseException:字符引用“& #xfffe”是无效的XML字符。

1 个答案:

答案 0 :(得分:1)

我也不熟悉WoodStox,但我可以说FFFE确实不是一个有效的Unicode字符,因此输入问题可能比解析器更多。一些编码器以UTF-16编码最常使用FFFE来指示字节顺序(小端或大端)。根据它是以FFFE还是以FEFF的形式回读,解码器知道选择哪个字节顺序。但它不是标准,并非所有解码器都支持它。

当这样使用时,它始终是文件的前两个字节。

所以,你需要检查的是:

  • 您使用的是正确的字符编码(通常是UTF-8还是UTF-16)?
  • 如果使用UTF-16,您的文件是以FFFE还是FFEF开头的?
  • WoodStox的设置是否支持自动检测字节顺序?

最坏的情况是,如果您的文件以FFFE或FFEF开头,只需将其从文件中删除即可将其提供给WoodStox。但是,请确保在WoodStox中设置正确的字节顺序。