我使用Netbeans 8.02(JDK8; java版本1.8.0_45)用Java编写了一个小程序。 它读取一个XML文件(采用UTF-8编码),查找并替换字符“&”,解析文件并对其进行签名。
从Netbeans执行这个程序没问题。 从Windows XP shell执行相同的程序我遇到有关要签名的文件的编码的错误。 从Windows 7 shell执行相同的程序,每件事情都可以。
有人知道造成这种不同行为的原因是什么?
答案 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”。