日期:2014-05-19  浏览次数:20651 次

jsp: forward的jsp:param参数传递问题,虽然经典但请大家看好再回,别高兴得太早也不要紧张哈
以下是源码:
test.jsp
<%@ page language="java" contentType="text/html;charset=gb2312" pageEncoding="GBK"%>
<%request.setCharacterEncoding("GBK");%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>test</title>
</head>
<body>
test.jsp页面
<br>
<jsp:forward page="MyJsp.jsp">
<jsp:param name="aa" value="中国文字处理" />
</jsp:forward>
</body>
</html>

MyJsp.jsp
<%@ page language="java" contentType="text/html;charset=gb2312" pageEncoding="GBK"%>
<%request.setCharacterEncoding("GBK");%>
<html>
  <head>
  <title>MyJSP</title>
  </head>
  <body>
  <h1>这是MyJsp页面</h1>
  <%=new String(request.getParameter("aa").getBytes("ISO-8859-1"),"GB2312")%>
  </body>
</html>

运行结果:是些???问号,不是乱码!!
这是MyJsp页面
??????


希望有人能帮到我!我已经看过很多帖子也没找到解决方法,实在没办法了!!

------解决方案--------------------
public class TestEncoding {

/**
* @param args
*/
public static void main(String[] args) {
String temp = "测试中文";
try {
System.out.println(new String(temp.getBytes("ISO-8859-1"), "GB2312"));
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

}

我想,上面的代码足以说明你的问题了。和传参数没啥关系。

btw:如果来考我们的话,只能说题目太简单。
------解决方案--------------------
把这个<%=new String(request.getParameter("aa").getBytes("ISO-8859-1"),"GB2312")%>改为
<%=request.getParameter("aa")%>