在Java应用开发中,字符集问题,可能是令很多初学者困惑的问题。根据我个人经验,解决字符集编码混乱的最有效方法是统一字符集,是上策;依靠程序语句实现字符集转换是下策,这种方法,并不能保证结果是完全一致的,可能给今后的维护带来巨大的负担。
统一字符集的含义
保持IDE、网页、浏览器、数据库、服务器统一使用一种字符集,对于中文来讲,要么是GBK,要么是UTF-8,推荐使用UTF-8。
编码转换
使用程序语句实现编码转换的必要前提是必须知道原编码是什么。比如:
String a = "字符编码";
String b = new String(a.getBytes("utf-8"), "gbk");
System.out.println(b);
String c = new String(b.getBytes("gbk"), "utf-8");
System.out.println(c);
否则,会导致信息丢失。在知道原编码的前提下实现编码转换,也不能保证转换结果完全一致,这对于十分重要的数据来说,其结果可能是灾难性的。
问题一例
如:在初次使用jboss-5.1.0.GA服务器时,在网页中的中文不能正确显示,修改服务器配置后,问题得到解决。
找到..\jboss-5.1.0.GA\server\default\deploy\jbossweb.sar文件夹下的server.xml文件,在以下节点添加属性 URIEncoding='UTF-8
<Connector protocol="HTTP/1.1" port="8080" address="${jboss.bind.address}"
connectionTimeout="20000" redirectPort="8443" URIEncoding='UTF-8'/>
另一种实用方法
可能,某一个程序是用GBK编码写的,当在编码是UTF-8的IDE中调用时,中文部分全是乱码,一个简单的解决办法是使用写字板打开,全选,拷贝,粘贴到IDE中。