代码语言:javascript复制
String reqContent = "abcdef中文"; //new String("abcdefee".getBytes()," GBK ");
System.out.println("reqContent=" reqContent);
String reqContentTest = new String("abcdef中文".getBytes("GBK"));
System.out.println("reqContentTest=" reqContentTest);
System.out.println("file.encoding是否一致=" reqContent.equals(reqContentTest));
String reqContent2Md5 = MD5.MD5Encode(reqContent);
String reqContent3Md5 = MD5.MD5Encode(reqContentTest);
System.out.println("reqContent2Md5=" reqContent2Md5);
System.out.println("reqContent3Md5=" reqContent3Md5);
System.out.println("file.encoding是否一致md5=" reqContent2Md5.equals(reqContent3Md5));
String reqContent2 = new String("abcdef中文".getBytes("UTF-8"));
String reqContent3 = new String("abcdef中文".getBytes("GBK"));
System.out.println("是否一致=" reqContent2.equals(reqContent3));
代码语言:javascript复制输出结果:
reqContent=abcdef���� reqContentTest=abcdef���� file.encoding�Ƿ�һ��=true reqContent2Md5=5d325b0b0bb2a931a6c9c213bf3d6965 reqContent3Md5=5d325b0b0bb2a931a6c9c213bf3d6965 file.encoding�Ƿ�һ��md5=true
以上仅仅测试的是GBK编码,实际idea设置的是UTF-8编码。
如果idea未设置默认是GBK编码,而文件是UTF-8编码,所以编码不一致的情况,会出现RSA验签等问题,因为单单从打印出来的文字来看很难发现,
可以通过字符比较和MD5的方式来比较是否一致,从而发现是否是编码问题。
代码语言:javascript复制* 在VM Options里面加上 -Dfile.encoding=UTF-8 并应用
* 以上更改后, 控制台输出会乱码, 还需要将IDEA的启动环境也配成UTF-8, 在IDEA安装目录下, 打开 idea64.exe.vmoptions , 最后一行加上 -Dfile.encoding=UTF-8