以Get方式跟随URI传递中文参数在收端出现乱码

内存条 发表于 2005-12-31 9:31:00
最近遇到一个问题:用get方法传递中文有问题,用post没有问题。
问题简单的描述是这样的:
<a href="userGroup.jsp?userGroupName=<%=userGroupName%>">aa</a>
这里userGroupName是中文

在userGroup.jsp页面得到的userGroupName却是乱码。
每个页面也都有<%@ page language="java" pageEncoding="GBK" %>说明。

后来上网找了一下才知道:pageEncoding这个只对post起作用。get方法提交
时,大家可以从地址栏里看到提交的参数,这是因为get方法传递是作为报文
头提交的,而pageEncoding对报文头是没有作用的,所以仍然按照 iso8859-1编码,才出现了刚才的乱码问题。而post提交的是form表单的内容,pageEncoding指定了它的编码,所以他会按照指定编码传递。

问题清楚了,下面就来解决它:

由于tomcat的servlet实现中ServletRequest.setCharacterEncoding方法未对HTP报文头的内容进行解码,因此
使用HTTP的GET方法提交的数据将不能正确的解码.解决方案为修改其服务器的配置server.xml文件中对HTTP协议的
Connector配置,加上URIEncoding="GBK"属性,配置完成以后"可能"的内容为
< Connector port="8080"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000" 
disableUploadTimeout="true" URIEncoding="GBK" /> 
大功告成!!!! 

原文地址:https://www.cnblogs.com/cy163/p/1298196.html