JSP学习笔记(一百零六):Java开发中的url中文编码

URL中传递中文参数乱码的问题,是一个老问题。

我以Tomcat和Weblogic分别测试,给出一个统一的解决办法:
传递中文参数前,可以使用javascript对参数进行编码,可以使用escape,encodeURI,encodeURIComponent这三个函数中的其中一个进行编码。在我测试的过程中,用escape解码需要借助第三方写的函数,而且函数写的比较复杂,放弃;用encodeURIComponent的话,在Tomcat下与Weblogic下解码方式不一致,放弃;用encodeURI可以。

encodeURI在Java里等同于URLEncoder.encode(str, "utf-8");
encodeURIComponent在Java里等同于URLEncoder.encode(str, "gb2312")

我用的是struts2,在action类中,无需解码,直接可以用
在普通的jsp页面中,需要在页面指定:request.setCharacterEncoding("gb2312");或者<%@ page language="java" pageEncoding="gb2312"%>

还有一点就是,在Tomcat下需要修改Server.xml中编码为utf-8:URIEncoding="UTF-8"
    <Connector port="8080"  maxHttpHeaderSize="8192"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8" />

 

这样,在Tomcat和Weblogic就可以用统一的方式解决中文乱码了。写的很乱,有时间再把这篇文章整理一下。
posted @ 2009-08-05 15:05  魔豆  阅读(921)  评论(0编辑  收藏  举报