我想知道jsp:param传递参数的过程,涉及中文乱码问题

代码如下
MyJsp.jsp:
<jsp:include page="hello.jsp">
<jsp:param value="我胡汉三" name="userName"/>
</jsp:include>

hello.jsp:
<%=request.getParameter("userName") %>

jsp页面传参方式不是只有3中,url,get和post,我开始觉得这个应该属于url或者get方式的传参吧,如果是这样的话,那么tomcat应该是会默认对url和get方式提交的参数用iso-8859-1重新编码,所以我也尝试过修改tomcat的server.xml文件,在Connecter标签里面添加URIEncoding=“UTF-8”,但是没效果
然后我在hello.jsp页面获取参数之前设置request.setCharacterEncoding("UTF-8");也没效果
但是我在MyJsp.jsp里面设置request.setCharacterEncoding("UTF-8");就有效果了
我觉得这个和我之前对jsp参数编码的理解不太一样····,URIEncoding没有用说明这种方式不是url或者get方式,但是request.setCharacterEncoding()不是表明对浏览器发送来的数据进行重新编码吗,那么上面这个例子是不是表明在提交请求的页面request就执行了对参数的重编码,正常来说应该是在hello.jsp里面设置request.setCharacterEncoding()方法才对吧
注:这2个页面我都加了设置浏览器编码的代码和jsp页面编码,如下
<%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
重点是我这个不是涉及到后台吧,就是一个jsp页面包含另一个jsp页面并传递一个参数,然后在包含的页面里面打印获得的参数,我直接运行项目显示MyJsp.jsp页面

jsp往后台传参数时加上这个var n="";
//将汉字转换成ASCII码,然后在服务器端里再根据ASCII码转换成相应的字符
for(i=0;i<planName.length;i++){
n+=planName.charCodeAt(i)+",";//将字符转换成相应的ASCII码并用空格隔开;
}
plantName为你要传的汉语
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-01-08
你可以在hello.jsp里面加上:
response.setCharacterEncoding("UTF-8")
就有效果了。你就明白了本回答被提问者采纳