BOM在不同项目上的显示方式不同

时间:2013-11-06 11:08:23

标签: java byte-order-mark

我有一种奇怪的情况,我无法理解。

 public static void main(String[] args) throws IOException {
    Reader reader = new FileReader("c:/file/UT563984.xml");
    int b = 0;
    while ((b = reader.read()) != -1) {
      System.out.println(b);
    }
  }

当我将此代码作为一个简单的小型Java程序运行时,输出为

255 254 60 0 63 0 120 0 109 0 ......

但是,当我在一个包含许多用于Spring,SOAP Web Service,Junit等的jar的项目中运行它时,它会提供不同的输出 -

65533 65533 60 0 63 0 120 0 109 0 .....

如您所见,BOM完全错误。

这里发生了什么?

某些罐子是否干扰了文件读取过程?

1 个答案:

答案 0 :(得分:2)

我建议使用FileInputStream读取文件,然后按原样获取字节。 FileReader涉及使用默认编码将字节转换为字符,这可能是混淆的原因