今天碰到一个页面传值的问题本来想用jsp:param传递后来中文老是有乱码 就用别的方法传递了,回来以后百思不得其解 做了如下实验。求高手解答原因
x.jsp<%@ page language="java" contentType="text/html; charset=gbk"
    pageEncoding="gb2312" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gbk">
<title>test forward</title>
</head>
<body>
<jsp:include page="jspforward2.jsp">
<jsp:param name="a" value="内容1为什么不能是中文"/>
<jsp:param name="b" value="b2"/>
<jsp:param name="c" value="c3"/>
<jsp:param name="d" value="d4"/>

</jsp:include>
</body>
</html>xx.jsp<%@ page language="java" contentType="text/html; charset=gbk"
    pageEncoding="gb2312"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gbk">
<title>test forward2</title>
</head>
<body>
<%
request.setCharacterEncoding("GB2312");
String s1 = request.getParameter("a");
//out.println(s1);
//将字符编码由ISO8859_1转换为字节数组在将字节数组从新编码成GBK赋值给s1。
byte[] b1 = s1.getBytes("ISO8859_1");
for(byte bt:b1) {
out.print(bt + " ");
}
s1 = new String(b1,"GBK");
String s2 = request.getParameter("b");
String s3 = request.getParameter("c");
String s4 = request.getParameter("d");
%>
<%=s1 %><br>
<%=s2 %><br>
<%=s3 %><br>
<%=s4 %><br>
</body>
</html>无论输入什么汉字byte都是63 jsp:param到底可不可以传中文啊

解决方案 »

  1.   

    request.setCharacterEncoding()
    用错地方了吧。
      

  2.   

    <%@ page language="java" contentType="text/html; charset=gbk"
        pageEncoding="gb2312"%>
    <meta http-equiv="Content-Type" content="text/html; charset=gbk">
        request.setCharacterEncoding("GB2312");
    都设置成同一个编码
      

  3.   

    <meta http-equiv="Content-Type" content="text/html; charset=gbk">
    <title>test forward2</title>
    </head>
    <body>
    <%
        request.setCharacterEncoding("GB2312");
      

  4.   

    使用<Jsp:param value="URLEncoder.encode("内容1为什么不能是中文","GBK")" name="a" />
    在另外一个页面使用String str= URLDecoder.decoder(request.getParameter("a"),"GBK");
    URLEncoder和URLDecoder是在Java.net.*;下