String str = "MessageContent=中文转换";
String a = new String(str.getBytes("UTF-8"),"gb2312");
System.out.println(a);
这样转换出来的是乱码。。。
------解决思路----------------------
显示乱码是取决于你的编译环境的,并不是你转码失败
String str = "MessageContent=涓?枃杞?崲";
try {
String a = new String(str.getBytes("gbk"),"utf-8");
System.out.println(a);
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
------解决思路----------------------
百度搜索到的一个解释,希望对你有用!
首先要看你系统本来默认是什么编码方式的了这很重要。
在.java中声明的String变量的字符编码,是与当前文本编辑器使用的字符编码一致
例如,在MyEclipse中,我设置的默认编码为GBK
系统数据依照gbk的编码方式。使用str.getBytes("gbk")把数据还原(这点很重要),
然后利用new String(str.getBytes("gbk"), "utf-8")把数据从gb2312转换成utf-8
所以要清楚知道str.getBytes("gbk")这里的str字符本来是不是gbk编码的很重要,如果它是iso8859-1呢,那就会出错了。也许你不小心弄混了。就会时对时错了。
注意:
在.java中声明的String变量的字符编码,是与当前文本编辑器使用的字符编码一致
例如,在MyEclipse中,我设置的默认编码为GBK
则字符就是gbk编码格式。
------解决思路----------------------
我猜你可能是想用一个gb2312的JAVA程序读取一个字符编码为UTF-8的属性文件,你只要正确设置流的字符编码为UTF-8,就可以在gb2312里正确显示这个文件里的字符了,代码如下:
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("D:/testencode.txt"),"UTF-8"));
String str = reader.readLine();
while(str !=null){
System.out.println(str);
str = reader.readLine();
}
------解决思路----------------------
两者不能直接转换。要过度一下。比如先转为unicode或者转为字节数组。
------解决思路----------------------
当你“需要一个字符“时是没有字符集的概念的。字符集只在你想把它”转移到另一个系统中”时才有意义,比如把字符通过网络发送出去或保存到磁盘上,这种情况下都是要求 byte[] 类型的数据,才有了把 char 或 String 转换成 byte[] 的要求。而如果对方也是接收String 作为参数的话,你可以忘记字符集这回事。
因此你直接这么 new String(a.getBytes("UTF-8"), "GB2312") 是没有实际意义的。