首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

【编码】处理页面乱码有关问题。

2012-01-22 
【编码】处理页面乱码问题。。。Java codepublic static void main(String[] args) {String str 中国Syste

【编码】处理页面乱码问题。。。

Java code
public static void main(String[] args) {        String str = "中国";                System.out.println("系统默认编码:" + Charset.defaultCharset());                try {            //第一种情况            byte[] bytes1 = str.getBytes("GBK");            String newStr1 = new String(bytes1, "GBK");            System.out.println(newStr1);                        //第二种情况            byte[] bytes2 = str.getBytes("UTF-8");            String newStr2 = new String(bytes2, "UTF-8");            System.out.println(newStr2);                    } catch (UnsupportedEncodingException e) {            e.printStackTrace();        }    }

输出:都正常输出。

字符编码不是很懂。。。我感觉上面的两种情况应该有一种是乱码。。。
JVM中的字符串都是Unicode编码,为什么得到GBK的字节数组和UTF-8的字节数组都可以重新正常输出呢?!
希望大家能解释一下这中间的原理啊。。

[解决办法]
无论你是gbk还是utf-8,经过编译生成的.class文件中,均是以unicode编码的方式存储。
.getBytes("GBK"),按"GBK"的字符集返回某字符串在该编码下的byte数组表示,这时就和系统默认的UTF-8没有关系了。当只有没有指定用何种字符集时,会默认使用系统的字符集。

热点排行