第一个jsp页面:
<%@ page language="java" import="java.util.*" pageEncoding="GB2312"%>
<%
          String  s1 = "你好了";
 %>
<html>
  <body>
 
<jsp:forward page="index2.jsp">
     <jsp:param name ="s1"  value="<%=s1%>"/>
</jsp:forward>  </body>
</html>第二个jsp页面:
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%
           request.setCharacterEncoding("gbk");
          String  ss = new String(  request.getParameter("s1").getBytes("ISO-8859-1"),"GBK");
          out.println(ss);
          
 %>执行第一个jsp页面,由于自动转到第二个页面,看到的应该是“你好了”,但是却是乱码, 为什么呢?非常谢谢大家啊。

解决方案 »

  1.   

    应该是pageEncoding="GB2312"和pageEncoding="GBK"的问题吧 你都用pageEncoding="GB2312"试试看
      

  2.   

    String ss = new String( request.getParameter("s1").getBytes("ISO-8859-1"),"GBK");
    这个字符串的编码转换有点多余;request.setCharacterEncoding("gbk");
    请求的编码设置应该放在第一个页面的forward 之前
      

  3.   

    乱码的问题 只要保持整个项目的编码一致就可以了。建议使用字符编码:UTF-8
      

  4.   

    同一个项目建议统一编码啊。
    试一下这句不要  String ss = new String( request.getParameter("s1").getBytes("ISO-8859-1"),"GBK");
      

  5.   

    <jsp:forward page="index2.jsp">
    <jsp:param name ="s1" value="<%=s1%>"/>
    </jsp:forward>这个类似于链接中传递参数,注意编码的统一,在接受的时候保证与客户端一致
      

  6.   

    传过去之前用<jsp:param name ="s1" value="<%=URLEncoder.encode(s1,"GB2312")%>"/>编码一下吧,然后接收时再String ss = new String( request.getParameter("s1").getBytes("ISO-8859-1"),"GBK");转码,试试,URLEncoder是java.net.*包下面
      

  7.   

    <%@ page language="java" import="java.util.*" pageEncoding="GB2312"%><%
    String s1 = "你好了";
    %>
    <html>
    <body>
      <%request.setCharacterEncoding("gb2312");%>
      <jsp:forward page="index2.jsp">
      <jsp:param name ="s1" value="<%=s1%>"/>
      </jsp:forward>
    </body>
    </html><%@ page language="java" import="java.util.*" pageEncoding="GBK"%><html>
    <head></head>
    <body><%=request.getParameter("s1")%></body>
    </html>
    这是改过的代码,已经测试过了。整了一上午,不易啊!
      

  8.   

    修改一下你的IDE的 默认编码  重新建!