有效地删除UTF字节顺序标记

时间:2013-08-08 14:13:30

标签: java xml utf-8 jaxb byte-order-mark

我正在寻找以下问题的有效解决方案:

org.xml.sax.SAXParseException: Content is not allowed in prolog

问题是在解组文件之前(使用jaxb)跳过(或删除)前3个字节(如果存在)。

我可以通过检查前三个字节然后将所有内容写入新文件并使用新文件来使其工作,但这看起来非常低效。

如果存在BOM,我已经尝试将文件指针移动到3个字节以上(并验证了指针的位置),但是当我将输入流传递给jaxb时,它仍会抛出相同的异常;我的直觉是文件指针正在被重置。

有没有人对此有任何想法?

谢谢

1 个答案:

答案 0 :(得分:5)

使用剥离BOM的InputStream decoractor,例如来自Apache Commons IO的BOMInputStream