netbeans和shell窗口之间的不同行为

时间:2015-05-27 21:04:20

标签: java shell netbeans

我使用Netbeans 8.02(JDK8; java版本1.8.0_45)用Java编写了一个小程序。 它读取一个XML文件(采用UTF-8编码),查找并替换字符“&”,解析文件并对其进行签名。

从Netbeans执行这个程序没问题。 从Windows XP shell执行相同的程序我遇到有关要签名的文件的编码的错误。 从Windows 7 shell执行相同的程序,每件事情都可以。

有人知道造成这种不同行为的原因是什么?

1 个答案:

答案 0 :(得分:0)

为了尽量减少这些不同行为之间的距离,从而避免BOM和字符集的错误,我用这种方式解决了:

f = new File(PatInputFile);
String sif = readfile(PatInputFile,StandardCharsets.UTF_8);
byte[] contentInBytes = sif.replaceAll("&", "&").getBytes("UTF-8");
FileOutputStream fop =new FileOutputStream(f);
fop.write(contentInBytes);
fop.flush();
fop.close();

,其中

 private static String readfile(String path, Charset encoding)  throws IOException 
{
  byte[] encoded = Files.readAllBytes(Paths.get(path));
  return new String(encoded, encoding);
}

等解析和签署文件“f”。