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到底是怎么进行编码转换的啊。
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到底是怎么进行编码转换的啊。
msg = new String(msg.getBytes("UTF-8"), "UTF-8");
或
msg = new String(msg.getBytes("GB2312"), "GB2312");
msg = new String(msg.getBytes("ISO8859-1"), "GBK");
如果用eclipse可以改java文件的保存方式为gb2312在试试
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);//乱码
上面都出错了,当然就
System.out.println(msg);//乱码
windwos 的console 不支持UTF-8,乱码可以理解
msg = new String(msg.getBytes("UTF-8"), "GB2312");
System.out.println(msg);//乱码
我也不是很明白,上面的乱码我认为是显示引起的,但内存中应该是正确的,转不回来就不好理解了