String str = new String("中".getBytes(),"gb2312"); String temp = new String(str.getBytes(),"utf-8"); String an = new String(temp.getBytes(),"gb2312"); System.out.println(an);
这里为什么输出的an会是乱码么????请哪位大侠帮忙解释下。。谢谢第一个str可能会出现乱码,这个和Default Encoding有关系,如果当前的编码是gb2312,那么str就是中,如果本地编码不是gb2312,将有可能出现乱码,至少肯定不是‘中’这个字符。 因此,我们在对字符串进行解码的时候,尽量指定编码方式。 好,现在我现在假定本地编码是gb2312,这个时候temp肯定是乱码。一个使用gb2312解码字节数组,用utf8编码的话,肯定是不能解析成正确的字符串的。 如果,temp是乱码,也就是出现几个?,使用本地编码进行解码的时候,是能够被正常解码的,因为本地编码和gb2312对?号的编码的字节一致,因此编码后的an依然是? mark