描述:
同一个文件我转成字符串之后传的MD5函数中计算值校验数据,在本地windows上正常通过校验,在linux上校验未通过。
排查:
打印日志文件发现两个系统的MD5值不一致
原因:贴出转换代码
//读取js返回String
public static String js2string(String path){
StringBuffer out = new StringBuffer();
try{
InputStreamReader inreader = new InputStreamReader(classLoader.getResourceAsStream(path));
BufferedReader br = new BufferedReader(inreader);
String str = null;
while ((str = br.readLine()) != null) {
out.append(System.lineSeparator() + str);
}
br.close();
inreader.close();
}catch (Exception e){
e.printStackTrace();
}
return out.toString();
}
症结所在:注意System.lineSeparator()方法 On UNIX systems, it returns "\n"; on Microsoft Windows systems it returns "\r\n"。
处理方案:
换行不再使用System.lineSeparator()方法,而是写死 "\r\n",亲测有效