JAVA如何把这个十六进制字符串数组转换成汉字?00 20 00 2000 31 00 30 00 31
00 31 00 39 00 38 00 35 00 30 
00 37 00 32 00 37 00 8F里面是性别,名族,日期

解决方案 »

  1.   

    参考下这个帖子
    http://topic.csdn.net/u/20070515/10/dbf0c19b-bce0-4614-aba5-53632938d8ba.html
      

  2.   

    原来是字节byte,我把他转换成十六进制字符串,输出来就是上面那些数字了,怎么把他们转换为汉字呢?这个是读取二代身份证信息的
      

  3.   

    String public String(byte[] bytes, String charsetName)
            throws UnsupportedEncodingException构造一个新的 String,方法是使用指定的字符集解码指定的字节数组。新的 String 的长度是一个字符集函数,因此不能等于字节数组的长度。 
     当给定字节在给定字符集中无效的情况下,该构造方法无指定的行为。当需要进一步控制解码过程时,应使用 CharsetDecoder 类。 
      参数:
     bytes - 要解码为字符的字节
     charsetName - 受支持的 charset 的名称 
     抛出: 
     UnsupportedEncodingException - 如果指定字符集不受支持
    ---------------------------------------------------------------
    String类的一个构造方法,第二个参数指定你的bytes是什么字符集.
     
      

  4.   

    怎么出来还是乱码哦,唉,获取到字节数组了然后将字节数组转换为Unicode码格式,还是乱码,中文的,数字不会乱。
      

  5.   

    文字编码格式为GB13000.1 即Unicode00 00 90 01 00 04 00 81 68 2F 
    63 99 9F 20 00 20 00 20 00 20 
    00 20 00 20 00 20 00 20 00 20 
    00 20 这个是姓名53 6C 51 89 5B 40 5C 20 00 20 
    00 20 00 20 00 20 00 20 00 20 
    00 20 00 20 00 32 00 30 00 30 
    00 38 这个是出来应该是 长泰县公安局  才对
      

  6.   


    String HX = "BABAD7D6D7AABBBB";
    byte[] b = new byte[HX.length()/2];
    for(int i=0;i<HX.length();){
        int j = Integer.parseInt(HX.substring(i,i+2), 16);
        b[i/2]=(byte) j;
        i+=2;
    }
    try {
        System.out.println(new String(sb,"GB2312"));
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    }
      

  7.   

    String HX = "BABAD7D6D7AABBBB";
    byte[] b = new byte[HX.length()/2];
    for(int i=0;i<HX.length();){
        int j = Integer.parseInt(HX.substring(i,i+2), 16);
        b[i/2]=(byte) j;
        i+=2;
    }
    try {
        System.out.println(new String(b,"GB2312"));
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    }