在jre7于jre8中相同的代码产生不同的结果 encodingstringbytearrayjava 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你这句String tmp = new String(hashedPasswordBytes,"GBK");明显就是逻辑上错误的代码,hashedPasswordBytes是经过SHA散列的结果,其类型是普通字节流,又不是GBK编码的文本,你怎么能够用GBK去解码?这样强行解码的结果就是产生很多乱码,并且更严重的后果是这些乱码实际上已经丢失的原有字节信息,比如一个字节 -120 ,解码后由于不存在对应的字符,因此这个解码器用空格代替,结果 -120 就变成了32(空格的ASCII码为32),当然这里只是举个例子,实际上解码器怎么解码这些“根本不能解码的数据”,不同的JDK版本可能有细小区别,所以就可能导致你说的JRE7和8结果不同。搞不懂当初为什么要写这种不但逻辑错误,而且毫无意义的代码。。 这个主要是以前老的逻辑代码,然后我们现在把JRE7 升级到JRE8,然后发现的问题。想找一个办法绕过去让它的老的数据也能够验证通过 我知道你想让JRE8兼容以前的老系统,但是我说了你这样去错误的解码产生的结果是不可预料不可复制的(当然理论上JRE7可以做的事JRE8一定也能做,但是你就需要去研究JRE7的解码模块是如何解码的,然后在JRE8中自己写个和JRE7一样的解码模块用)所以两个选择:1.放弃使用JRE8,或者至少这个模块需要在JRE7环境中编译运行2.将系统全部重新修改,把老数据转换成新数据 java菜鸟问题 收集JAVA WebServer和C++ Client通讯的方法?(在线等) 图中求最短路径并把路径记录下来 java初学者遇到的问题 java 垃圾回收的问题 请教一个基础的问题,谢谢! 多维向量vector的长度如何获取 各位大哥,大姐:救救小弟我吧,不然中秋之夜我就要加班了!!! 请教各位大哥,小弟感激不尽! weblogic6创建Jdbc Connection Pools问题 请问Socket底层是如何实现的,根据什么原理来进行客户端与服务端通信的? 新手求教
String tmp = new String(hashedPasswordBytes,"GBK");
明显就是逻辑上错误的代码,hashedPasswordBytes是经过SHA散列的结果,其类型是普通字节流,又不是GBK编码的文本,你怎么能够用GBK去解码?这样强行解码的结果就是产生很多乱码,并且更严重的后果是这些乱码实际上已经丢失的原有字节信息,比如一个字节 -120 ,解码后由于不存在对应的字符,因此这个解码器用空格代替,结果 -120 就变成了32(空格的ASCII码为32),当然这里只是举个例子,实际上解码器怎么解码这些“根本不能解码的数据”,不同的JDK版本可能有细小区别,所以就可能导致你说的JRE7和8结果不同。搞不懂当初为什么要写这种不但逻辑错误,而且毫无意义的代码。。
这个主要是以前老的逻辑代码,然后我们现在把JRE7 升级到JRE8,然后发现的问题。想找一个办法绕过去让它的老的数据也能够验证通过
1.放弃使用JRE8,或者至少这个模块需要在JRE7环境中编译运行
2.将系统全部重新修改,把老数据转换成新数据