String msg = "vx001内容";
System.out.println(msg);//OK
msg = new String(msg.getBytes(), "GB2312");
System.out.println(msg);//OK
msg = new String(msg.getBytes("GB2312"), "UTF-8");
System.out.println(msg);//乱码
msg = new String(msg.getBytes("UTF-8"), "GB2312");
System.out.println(msg);//乱码
--------
转来转去就是死活转不回去,JAVA到底是怎么进行编码转换的啊。

解决方案 »

  1.   

    试试这个
    msg = new String(msg.getBytes("UTF-8"), "UTF-8");

    msg = new String(msg.getBytes("GB2312"), "GB2312");
      

  2.   

    msg = new String(msg.getBytes("GBK"), "ISO8859-1");
    msg = new String(msg.getBytes("ISO8859-1"), "GBK");
      

  3.   

    应该是要看你用什么编码方式保存的吧?
    如果用eclipse可以改java文件的保存方式为gb2312在试试
      

  4.   

    楼主String msg = "vx001内容";
    System.out.println(msg);//OK
    可以肯定文件是以GB2312或GBK等汉字编码存储的;
    msg = new String(msg.getBytes(), "GB2312");
    System.out.println(msg);//OK
    当然了,你以windows系统默认的方式(in China一般是GBK)解码然后再以GBK编码就等于没变,呵呵,也是可以输出的;msg = new String(msg.getBytes("GB2312"), "UTF-8");
    System.out.println(msg);//乱码解码用的是GB2312,编码为UTF-8,当然要出错了msg = new String(msg.getBytes("UTF-8"), "GB2312");
    System.out.println(msg);//乱码
    上面都出错了,当然就
      

  5.   

    msg = new String(msg.getBytes("GB2312"), "UTF-8");
    System.out.println(msg);//乱码
        windwos 的console 不支持UTF-8,乱码可以理解
    msg = new String(msg.getBytes("UTF-8"), "GB2312");
    System.out.println(msg);//乱码
    我也不是很明白,上面的乱码我认为是显示引起的,但内存中应该是正确的,转不回来就不好理解了