java在文件的开头读取一个不存在的奇怪字符

sam*_*amz 4 java xml jaxb

我的硬盘上有一个简单的xml文件.当我用记事本++打开它时,这就是我所看到的:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<content>
... more stuff here ...
</content>
Run Code Online (Sandbox Code Playgroud)

但当我用FileInputStream我得到的时候读它:

?<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<content>...
Run Code Online (Sandbox Code Playgroud)

我正在使用JAXB来解析xml,并且它会抛出"prolog中不允许的内容"的例外,因为"?" 标志.

什么是这个额外的"?" 标志?它为什么存在,如何摆脱它?

Jes*_*per 7

这个额外的字符是一个字节顺序标记,一个特殊的Unicode字符代码,它允许XML解析器知道文件中字节的字节顺序(小端或大端).

通常,您的XML解析器应该能够理解这一点.(如果没有,我会认为XML解析器中存在错误).

要解决此问题,请确保生成此XML的程序不会使用BOM.