我想实现的功能很简单。
A页面是一个登陆页面,有一个单选,两个表单。
B页面是checkinputtype,如果用户名密码正确,单选为学生,则跳转到C页面。
C页面负责显示登陆成功,并打印出用户名。
我把书上写的可以祛除乱码的方法都用上了,还是不行。请高手指点。
A:
<body>
<form name="loginform" method="post" action="checkinputtype.jsp">
    用户名:
    <input type="text" name="user"><br>
    密码:
                <input type="password" name="pass"><br>
 <input name="iden" type="radio" value="student" checked>
    学生
    <input type="radio" name="iden" value="teacher">老师<br>           
<input type="submit" name="Submit" value="提 交">
        <input name="Reset" type="reset" id="reset" value="重 填">     
    <br>
    </body>
B:
  <body>
<%
   request.setCharacterEncoding("GB2312");
   String name = new String(request.getParameter("user").getBytes("ISO8859_1"));
 String pwd = new String(request.getParameter("pass").getBytes("ISO8859_1"));
String leixing = new String(request.getParameter("iden").getBytes("ISO8859_1"));
if(name.equals("于经文")||pwd.equals("yjw")||leixing.equals("teacher"))
{  
    response.sendRedirect("userpanel.jsp");
}
else if(name.equals("张学兵")||pwd.equals("zxb")||leixing.equals("student"))
{
     session.setAttribute("message",name);
    response.sendRedirect("controlpanel.jsp");
}
%>       
    </body>
C:
   <body>
<%
   request.setCharacterEncoding("GB2312");
String message=null;
    message = (String)session.getAttribute("message");
       out.println(message);
%>>
    </body>登陆后,页面显示 %-- --%> html> ??????? > 
请指点。

解决方案 »

  1.   

    <%@ page contentType="text/html;charset=gb2312" %>
      

  2.   

    我每个上面都有<%@ page contentType="text/html;charset=gb2312" %>
    没有用啊
      

  3.   

    String name = new String(request.getParameter("user").getBytes("ISO8859_1"));
     String pwd = new String(request.getParameter("pass").getBytes("ISO8859_1"));
    String leixing = new String(request.getParameter("iden").getBytes("ISO8859_1"));
    不是这样写的吧?
    你试试这样
    String str= new String(request.getParameter("user"));
    String name=new String(str.getBytes("ISO-8859-1"),("UTF-8"));
      

  4.   

    另外,用<%@ page contentType="text/html;charset=UTF-8" %> 好一点结果如何记得给个回复。
      

  5.   

    看看这个帖子
    http://community.csdn.net/Expert/TopicView3.asp?id=4547791
      

  6.   

    public String getString(str)
    {
        byte[] s=str.getBytes("ISO8859-1");
        str=new String(s);
        return str;
    }
      

  7.   

    这样的用法不是万能的:new String(str.getBytes("iso-8859-1"))。
    为什么有时候这样做又是对的,其中的道理是什么。推荐楼主看一篇文章,理解其中的原理:
    http://www.regexlab.com/zh/encoding.htm
      

  8.   

    1. 首先要看 A 页面是什么编码,提交的数据的编码与 A 页面编码一致。2. 在 B 页面中使用
       request.setCharacterEncoding("与 A 页面一致的编码")3. 直接 request.getParameter 就可以了,不需要再进行转化。
      

  9.   

    request.setCharacterEncoding在JSP中有BUG不要用用new String("".getBytes("iso8859-1"),"_encodingClass")_encodingClass 填写你上一个页面的编码
      

  10.   

    加一句<%@ page language="java" pageEncoding="GB2312"%>
      

  11.   

    还有就是这里   String name = new String(request.getParameter("user").getBytes("ISO8859_1"),"GB2312");
     String pwd = new String(request.getParameter("pass").getBytes("ISO8859_1"),"GB2312");
    String leixing = new String(request.getParameter("iden").getBytes("ISO8859_1"),"GB2312");
      

  12.   

    回复人: sswater(光杆兵) ( ) 信誉:100  2006-02-12 12:09:00  得分: 0  
     
    1. 首先要看 A 页面是什么编码,提交的数据的编码与 A 页面编码一致。2. 在 B 页面中使用
       request.setCharacterEncoding("与 A 页面一致的编码")3. 直接 request.getParameter 就可以了,不需要再进行转化。
    ===========================================================================已经说得很清楚了String name = new String(request.getParameter("user").getBytes("ISO8859_1"));
    String pwd = new String(request.getParameter("pass").getBytes("ISO8859_1"));
    String leixing = new String(request.getParameter("iden").getBytes("ISO8859_1"));楼主把这几行后面的getBytes("ISO8859_1"))去掉String name = new String(request.getParameter("user"));像这样应该就好用了,不过这种方法确实不是万能的,有时候也会出乱码,当然这种也是最简单的