Java中如何把GBK编码的字符串转成utf-8编码

比如将GBK编码的字符串 “百度baidu” 转成utf-8编码的
String str1 = URLEncoder.encode("百度baidu","utf-8");

String newStr = new String(oldStr.getBytes("utf8"), "GBK");

String newStr = new String(oldStr.getBytes("GBK"), "utf8");

这种答案就不要贴上来了,懂点Java的人都知道这是错的

我先解释一下我对你的问题的理解 :
你的问题有点笼统 可以这么理解两个意思 : 一 ,你是想吧一个gbk编码的字符串用utf-8格式来编码
String s = new String ("全国".getBytes("GBK"),"GBK");
虽然这个时候的s是GBK编码的 但是s还是中文字符的 所以 上面这位同胞用 new(s.getBytes("GBK"),"UTF-8")的方式肯定是错的 应该用 String s1 = new String (s.getBytes("UTF-8"),"UTF-8") 这样s1就是UTF-8编码的字符串了
二,如果是遇见乱码问题 比如 String s = new String ("全国".getBytes("GBK"),"GBK");
这样的s就是gbk编码的 现在你要把GBK格式的编码用UTF-8去编码 肯定就会出现乱码
String s2 = new String(s.getBytes("GBK"),"UTF-8"); 这个s2肯定是乱码的 而且这样就根本解不出来了 系统出现的乱码显示的时候才会出现编码错误 所以 一般出现乱码 只要把输入流换个编码解析一下就ok了 还有什么不明白 可以问我
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-12-20
java不同编码之间进行转换,都需要使用unicode作为中转。
以utf-8转gbk为例,示例代码如下:
String t = "这是一个字符串aaa111";
String gbk= new String(t.getBytes( "GBK"));
System.out.println(gbk);
String unicode = new String(gbk.getBytes(),"GBK");
System.out.println(unicode);
String utf8= new String(unicode.getBytes("UTF-8"));
System.out.println(utf8);
第2个回答  2010-11-18
在java中有一个设定的内部语言设置,比如GBK或UTF-8,
jvm中的字符串只能以一种编码方式存在,你的命题就是伪命题。

当然存在硬盘里面就不一样了,可以以GBK方式存储,也可以以UTF-8方式存储。

在存为文件的时候,使用 String.getBytes("charSet")方式获取byte流,存入硬盘。本回答被网友采纳
第3个回答  2010-11-18
String str1 = URLEncoder.encode("百度baidu","utf-8");
第4个回答  2015-09-24
String str = "你要转换的字符串";
str = new String(str.getBytes("GBK"),"UTF-8");
相似回答