0

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

 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 是否会干扰文件读取过程?

4

1 回答 1

2

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

于 2013-11-06T11:13:33.427 回答