我写的是一个登陆界面,当姓名为空时返回登陆界面并显示错误消息,但显示的错误消息怎么是乱码啊?我已经设置为gb2312了啊
在second.jsp中:String errmsg,name;
               name=request.getParameter("name");
               if(name.length()==0)
                {
                   errmsg="输入不能为空白";
                   response.sendRedirect("first.jsp?errmsg="+errmsg);
                 } 在first.jsp中:<%@page contentType="text/html;charset=gb2312"%>
               <%request.setCharacterEncoding("gb2312")%>
               <%
                 String errmsg=request.getParameter("errmsg");
                 if(errmsg.length()!=0)
                    out.print(errmsg);
               %> 
               <form action=second.jsp method=post>
               <td><input type=text name="name">姓名</td>
               ...
各位大侠能否帮忙给看看,谢了。

解决方案 »

  1.   

    String errmsg=request.getParameter("errmsg");
     errmsg = new String(errmsg.getBytes("ISO-8859-1"),"GB2312");
     //...
      

  2.   

    <%@page contentType = "text/html;charset = gb2312"%>
    <%@page pageEncoding = "gb2312"%>
    加上这几名代码
      

  3.   

    那<%request.setChracterEncoding("gb2312")%>这句有什么作用呢?
      

  4.   

    恩,遇到过,你要是使用的tomcat4系列的版本,可以试一下换一个高版本的!
      

  5.   

    也不是,当时我们是在url里传递中文的时候出现的问题你是利用表单提交应该不是问题,GB2312注意都是大写呢?
      

  6.   

    那<%request.setChracterEncoding("gb2312")%>这句有什么作用呢?
    ------------------------------------------------------------
    这句有问题啊,掉了个分号<%request.setChracterEncoding("gb2312");%>在second.jsp中:String errmsg,name;
                   name=request.getParameter("name");
                   if(name.length()==0)
                    {
                       errmsg="输入不能为空白";
                       errmsg = java.net.URLEncoder.encode(errmsg);
                       response.sendRedirect("first.jsp?errmsg="+errmsg);
                     } 在first.jsp中:<%@page contentType="text/html;charset=gb2312"%>
                   <%request.setCharacterEncoding("gb2312");%>
                   <%
                     String errmsg=request.getParameter("errmsg");
                     if(errmsg.length()!=0)
                        errmsg = new String(errmsg.getBytes("ISO-8859-1"),"GB2312");
                        out.print(errmsg);
                   %> 
                   <form action=second.jsp method=post>
                   <td><input type=text name="name">姓名</td>这样就可以打印错误信息了
      

  7.   

    谢了,在second.jsp中也要加入errmsg = java.net.URLEncoder.encode(errmsg);这行代码。现在可以显示了。
      

  8.   

    java.net.URLEncoder.encode(errmsg)
    中文参数要加上的
    你结帖就可以了
      

  9.   

    response.sendRedirect("first.jsp?errmsg="+java.net.URLEncoder.encode(errmsg));
      

  10.   

    你的错误原因是因为tomcat的编码问题。
    看看这里:
    方法三:修改tomcat的server.xml文件中URIEncoding。
    http://www.blogjava.net/rickhunter/articles/33571.html
      

  11.   

    因为你在URL地址后边直接使用了中文参数,所以导致乱码,两种解决方案:
    1.在传参数之前先把参数进行转码:java.net.URLEncoder.encode(errmsg);
    2.在你的Tomcat目录-->conf目录-->server.xml里找出这段:
        <Connector 
    port="8080"               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
                   enableLookups="false" redirectPort="8443" acceptCount="100"
                   debug="0" connectionTimeout="20000" 
                   disableUploadTimeout="true" <!--在里边加上这个参数-->URIEncoding="gb2312"
     />
      

  12.   

    刚才用中文登陆了一下,有错误。用英文可以登陆。现在我已经搞混了,在server.xml中加入URIEncoding="gb2312"也不行啊。
      

  13.   

    用中文登陆和上面的问题又是两码事了,应该加上filter过滤器
      

  14.   

    怎么是这样? 光一个乱码就让人有的受了,上个月感觉网页挺好玩的就开始学java,html,然后学jsp了,没想到现在碰到了这个问题,而且一点头目都没有,一些资料也看不懂,比如过滤器。