新闻正文

J2EE中文乱码完全攻略

来源:    2008-7-29 09:19:36 网友评论 0 条 字体:[ ] ~我要投稿!

    一.GBK与UTF8的比较

    GBK的文字编码是双字节来表示的,即不论中、英文字符均使用双字节来表示,只不过为区分中文,将其最高位都定成1。

    至于UTF-8编码则是用以解决国际上字符的一种多字节编码,它对英文使用8位(即一个字节),中文使用24位(三个字节)来编码。对于英文字符较多的论坛则用UTF-8节省空间。

    GBK包含全部中文字符;
    UTF-8则包含全世界所有国家需要用到的字符。

    GBK是在国家标准GB2312基础上扩容后兼容GB2312的标准(好像还不是国家标准)
    UTF-8编码的文字可以在各国各种支持UTF8字符集的浏览器上显示。
    比如,如果是UTF8编码,则在外国人的英文IE上也能显示中文,而无需他们下载IE的中文语言支持包。 所以,对于英文比较多的论坛 ,使用GBK则每个字符占用2个字节,而使用UTF-8英文却只占一个字节。

    UTF8是国际编码,它的通用性比较好,外国人也可以浏览论坛
    GBK是国家编码,通用性比UTF8差,不过UTF8占用的数据库比GBK大~

    对于DZ论坛来说,很多插件都只支持GBK的,如果需要装较多插件的论坛还是用GBK比较好,而对装较少插件且有特殊用户群的论坛用UTF8比较好。

    二.为什么选择UTF8,原因有2个:

    1.因为要国际化嘛,选择UTF8可以很好地兼容其他国家语言,对台湾的繁体字也能很好地支持,GBK就比较难

    2.数据库的可移植性,大部分数据库对UTF8都有很好地支持

    三.需要统一字符集的地方有:

    1.首先开发工具,如MyEclipse,JB,Eclipse等,都可设置编辑的字符集

    2.众所周知的页面字符集设置

     在JSP头部声明:
    <%@ page contentType="text/html;charset= UTF-8" %>
      在Jsp的html代码中,声明UTF-8:
    <META http-equiv="Content-Type" CONTENT="text/html; charset=utf-8">

    3.过滤器

     public class TianYaActionServlet extends ActionServlet {
     private static final long serialVersionUID = 1L;

     protected void process(HttpServletRequest request,
     HttpServletResponse response) throws java.io.IOException,
     javax.servlet.ServletException {
     //   TODO Override this org.apache.struts.action.ActionServlet method
    request.setCharacterEncoding("UTF-8");//

    super.process(request, response);
 
    }
    }

    wml配置

    <servlet-class>
 
      com.TianYa.common.util.TianYaActionServlet
 
    </servlet-class>

    这样就不用总写request.setCharacterEncoding("UTF-8");

    4.如果个别需要转为其它字符集的用new String(yourString.getBytes("ISO-8859-1"),"UTF-8");

    5.容器设置,如Tomcat

    这里要注意form表单的method,Post与get字符集编码可能不同,Tomcat5.0以下的是相同的,以上的是不同的

    Post可以通过过滤器设置

    get一般是URL传参:

    Tomcat 5.0.28 - 发布目录 webapps

    修改conf/server.xml文件中的

    <Connector port="8080" .... />

    增加对GET方法获取数据时的编码设置参数 URIEncoding='GBK'

    <Connector port="8080" .... URIEncoding='GBK'/>



    JBOSS 4.0.2 - 发布目录 server/default/deploy (后缀.war)

    修改server/default/deploy/jbossweb-tomcat55.sar/server.xml文件中的

    <Connector port="8080" .... />



    增加对GET方法获取数据时的编码设置参数 URIEncoding='GBK'

    <Connector port="8080" .... URIEncoding='GBK'/>

 

    7.数据库字符集设置

    不同数据库字符集设置不同,我这就不一一介绍了

    mySQL可以连接数据库的URL设定jdbc:mysql://localhost:3306/test?useUnicode=true&    characterEncoding=UTF-8



收藏到ViVi   收藏此页到365Key
上一篇:GroovyHelp有新更新,v0.3.1发布
下一篇:编写Swing通用数据验证模块实例
用户名:新注册) 密码: 匿名评论 [所有评论]
评论内容:不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
本栏搜索
  • Google
   网站首页 -  网站地图 -  技术学习 -  网站投稿 -  帮助中心
Copyright 2003-2008 www.javah.net All Rights Reserved
2008 如果你喜欢本站 请收藏本站 并推荐给你的朋友一起分享