关于中文编码的一些问题

       第一步: Filter的实现:
                处理中文编码的问题一般都不脱离不了使用filter,同时使用UTF-8也是推荐的做法,为此web.xml中此filter我想是经典的处理方法:

  1. <filter>  
  2.  <filter-name>encoderfilterfilter-name>  
  3.  <filter-class>your.framework.web.filter.EncodingFilterfilter-class>  
  4.  <init-param>  
  5.     <param-name>encodingparam-name>  
  6.     <param-value>utf-8param-value>  
  7.  init-param>  
  8. filter>  

    第二步:设置页面的contentType为text/html;charset=utf-8使得页面编码方式为utf-8 
              contentType:指定的是JSP页最终 Browser(客户端)所见到的网页内容的编码.就是 Mozilla的 Character encoding, 或者是IE6的encoding。

  1. <%@ page contentType="text/html; charset=utf-8" language="java"%>  
             经过这样的处理,我们可以保证页面中表单提交的中文在写入数据库的时候不会出现中文哦,
    第三步:处理jsp页面中静态中文的问题:
              这可以使用多种方式解决,一般如果有struts的经历,且是一个比较疯狂struts使用者的话,会使用 <bean:message key="info.def"></bean:message>info.def所对应的中文字符使用gb2312进行编码,但是我比较喜欢使用另外一种变通的方法,处理方法如下:
            如a.jsp,则生成两个文件a.jsp,a_cn.jsp然后其内容为:
a.jsp
  1. <%@ page contentType="text/html; charset=utf-8" language="java"%>  
  2. <jsp:include page="a_cn.jsp" flush="true" />  
a_cn.jsp
  1. <%@ page contentType="text/html; charset=gb2312" %>  
  2. 正常显示的中文内容  

经过如此处理之后a_cn.jsp中表单提交到数据库中的信息一样也不会出现乱码的情况,因为原理和struts的类似…………
       第四步:处理javascript文件中的乱码:
                   如果沿用上面的处理机制,我们不可避免的要涉及到脚本的中文提示的问题,那么这里的乱码该如何处理呢?原理其实还是“第三步”的处理方式,对中文进行gb2312编码,我一般都选择编译整个js文件为gb2312.
      第五步:其他情况
              a、如果在实际的使用中gb2312不能满足字符集的要求的话,还是可以在可能出现特殊字符集的地方使用gbk等的编码。
              b、要尽量使用post方式提交数据,无论是jsp页面中的还是javascript中的,
              c、如果页面中 需要使用&lt; src="myimage.jpg?id=中文",则处理方法为:

  1.  <script language="javascript">  
  2.        document.write("<img alt='中文' src='/myimage.jpg?id=" + encodeURIComponent('<c:out value='${info.zhongwen}'/>') + "' width='120' height='150' />");   
  3. script>  

     上面只是在实际的使用过程中的处理方法,原理其实就是两点:
             1、保证客户端看到的编码为utf-8;
              2、对jsp页面中的中文内容使用有效的中文编码处理,比如gb2312.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值