iso8859-1,GBK,UTF-8之间转码问题

图片描述大概是这样想的,在原有的基础上新加一个中间前置转发。但是数据转码后数据不对。
在对一串数据做一系列操作后,大概如下

        (1)---------------
        String pwdString = new String(byteUtf8,"ISO8859-1");
        (2)---------------
        byte[] gg = pwdString.getBytes("GBK");
        (3)---------------
        String ggg = new String(gg,"GBK");
        (4)---------------
        String s4 = new String(ggg.getBytes("GBK"),"ISO8859-1");
        
        数据:7D2513D2BF374287
        
        结果:7D25133F3F37423F
       

ISO8859-1转GBK后好像数据丢失了。但是如果2,3这两步之间交互用的UTF-8就不会出现问题,再转回来初始数据也一样,如下

        (1)---------------
        String pwdString = new String(byteUtf8,"ISO8859-1");
        (2)---------------
        byte[] gg = pwdString.getBytes("UTF-8");
        (3)---------------
        String ggg = new String(gg,"UTF-8");
        (4)---------------
        String s4 = new String(ggg.getBytes("ISO8859-1"),"ISO8859-1");
        
        数据:7D2513D2BF374287
        
        结果:7D2513D2BF374287
阅读 2.2k
1 个回答

看起来前几位是对的,然后后面几位有问题,估计是某些编码要求后面补0,保证最后的总长度是8的倍数,可以往这个方向试试,不用写代码,直接用一些在线的转码工具试几下就有了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题