最近遇到一个问题:用get方法传递中文有问题,用post没有问题。 问题简单的描述是这样的:
这里userGroupName是中文
在userGroup.jsp页面得到的userGroupName却是乱码。 每个页面也都有<%@ page language=\说明。
后来上网找了一下才知道:pageEncoding这个只对post起作用。get方法提交时,大家可以从地址栏里看到提交的参数,这是因为get方法传递是作为报文头提交的,而pageEncoding对报文头是没有作用的,所以仍然按照 iso8859-1编码,才出现了刚才的乱码问题。而post提交的是form表单的内容,pageEncoding指定了它的编码,所以他会按照指定编码传递。
问题清楚了,下面就来解决它:
由于tomcat的servlet实现中ServletRequest.setCharacterEncoding方法未对HTP报文头的内容进行解码,因此
使用HTTP的GET方法提交的数据将不能正确的解码.解决方案为修改其
服务器的配置server.xml文件中对HTTP协议的
Connector配置,加上URIEncoding=\属性,配置完成以后\可能\的内容为
< Connector port=\
maxThreads=\enableLookups=\debug=\
disableUploadTimeout=\URIEncoding=\\大功告成! 2、文章2
表单提交中,method=\GET\为默认值,通过url提交过去,形式为:http://localhost:8081/test.jsp?username=bebe0453&password=082628&submit=è·??????
而 method=\POST\,则为隐式提交,在浏览器地址栏不会出现参数。 POST更加保密,且提交过去的容量更大,一般都采用POST提交。
3、文章3
在项目中,我们经常遇到需要在jsp页面切换中传递中文字符。这主要有两种方式。
1. URL方式,例如:http://website/test1.jsp?act=add&type=苹
果¶m= D B
2. FORM方式,例如:
我们将针对这两种情况,分别提供中文正确传递的解决方法。 情况1:URL方式
例如:http://website/test1.jsp?act=add&type=苹果¶m= D B
一般来说我们很少直接在URL里面把参数写成中文,如例子中的\苹果\这样传递。如果出现这种情况,在我们的接收参数的页面我们只需要做个简单的转换就可以了。 代码test1.jsp:(主要部分)
?
<%@ page language=\Encoding=\ <%
String type = request.getParameter(\ String result = new String(type.getBytes(\-1\
out.println(result); %>
更普遍的做法,就是对url中的中文字符进行编码,变成类似type= D B这样的字符。 代码MyJsp1.jsp:
<%@ page language=\b2312\
<%@ page import=\