日期:2014-05-16  浏览次数:20378 次

消除jsp中get方法传递中文参数的乱码问题
运行环境 Struts+TOMCAT 5.5
举个例子:
页面中的编码已经设置成
<@page contentType="text/html; charset=GB2312">
点击一个超链接.进行后台处理..
例如:
<html:link page="/Action.do?type=grad_limit_select_course_type_modify" paramId="type_name" paramName="rs" paramProperty="type_name">修改</html:link>
如果 type_name 这个属性是数字的话..不会出现什么问题.
如果是中文汉字.就会出现乱码.是在接收之前就是乱码.
所以在后台进行处理.是没有用的..

解决方法如下:
首先,进入tomcat目录(tomcat/conf)
找到配置文件 server.xml
在如下添加红色部分
<!-- Define a non-SSL Coyote HTTP/1.1 Connector on port 8080 -->
    <Connector port="8080"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               debug="0" connectionTimeout="20000"
               disableUploadTimeout="true" URIEncoding="UTF-8或GBK"/>
    <!-- Note : To disable connection timeouts, set connectionTimeout value
     to 0 -->
保存,重启tomcat即可

或者不使用 <html:link>
使用 <a href="action.do?type_name=${rs.type_name}" />修改
在Action 接收时转换编码.
m_Form.setType_name(new String(m_Form.getType_name().getBytes(
                "iso-8859-1"), "GBK"));
也是可以的..