public class Test { /**
 * @param args
 */
public static void main(String[] args) {
try {
String aaa = "部门";
System.out.println(aaa);
System.out.println(new String(new String(aaa.getBytes("GBK"), "utf-8").getBytes("utf-8"), "GBK"));
} catch (Exception ex) {
ex.printStackTrace();
}
}}打印结果是:部门
锟斤拷锟斤拷
怎么解决??

解决方案 »

  1.   

    String(byte[] bytes, String charsetName)
              Constructs a new String by decoding the specified array of bytes using the specified charset.
    是说用charsetName指定的编码来解码bytes字节数组,而按你的aaa.getBytes("GBK")获得GBK编码,然后你想用utf-8来解码GBK的编码,这样不乱码吗?
      

  2.   

    aaa.getBytes("GBK"), "utf-8 这时你的字符串已经出现乱码了编解码时所用的字符集要一致
      

  3.   

    new String(aaa.getBytes("GBK"), "utf-8")的方法不是给你转码
    而是如何解码
    也就是按照1#所说的那样的
    此处的new String已经是一个用utf-8方式去解码GBK的字符串了
    已经是乱码了
    但是不能说,转了一次再反转就能转回来的。
    要求解码不能破坏解码前的格式才能保证转来转去的没有问题。
      

  4.   

    你确定是用的GBK编码的java文件??
      

  5.   

    注意看一下myeclipse中工程的编码格式是什么,要统一
      

  6.   

    new String(aaa.getBytes("GBK"), "utf-8")的方法不是给你转码
    而是如何解码
    也就是按照1#所说的那样的
    此处的new String已经是一个用utf-8方式去解码GBK的字符串了
    已经是乱码了
    但是不能说,转了一次再反转就能转回来的。
    要求解码不能破坏解码前的格式才能保证转来转去的没有问题。