String a = "abc";
String b = new String(a.getBytes(),"UTF-16");上面是将a字符串转为utf-16,怎么把他从utf-16转回来呢?谢谢

解决方案 »

  1.   


    /**
      * 字符串编码转换的实现方法
      * @param str  待转换编码的字符串
      * @param oldCharset 原编码
      * @param newCharset 目标编码
      * @return
      * @throws UnsupportedEncodingException
      */
     public String changeCharset(String str, String oldCharset, String newCharset)
       throws UnsupportedEncodingException {
      if (str != null) {
       //用旧的字符编码解码字符串。解码可能会出现异常。
       byte[] bs = str.getBytes(oldCharset);
       //用新的字符编码生成字符串
       return new String(bs, newCharset);
      }
      return null;
     }
      

  2.   

    String str = "abc";
    String str1 = new String(str.getBytes(),"UTF-16");
    String str2 = new String(str1.getBytes(),System.getProperty("file.encoding"));
    这样转出来有问题:
    str1和str2是一样的
      

  3.   

    你转回来用
    String c = new String(b.getBytes("UTF-16"),Charset.defaultCharset() );另外,编码是指把字符串编码成字节数据,存贮时都是存贮的字节数据,然后根据其编码还原成对应的字符串.
    且JAVA虚拟机上所有字符都是以Unicode码形式的字节数据存贮的,如果楼主的a字符串是正常显示的话,那么你这样转出来的b字符串将变成乱码.(只是字母的话还可能不会乱码)
      

  4.   

    String a = "abc";
    String b = new String(a.getBytes("UTF16"),"要转换的类型");