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

 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是完全错误的。

这里发生了什么?

是否有一些jar干扰了文件读取过程?

最佳答案

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

10-05 23:00
查看更多