菜鸟代码-中文乱码,请高手指点。

aoliwen521 2006-02-11 11:29:14
我想实现的功能很简单。
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> ??????? >
请指点。
...全文
166 点赞 收藏 15
写回复
15 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
zyxzyx10 2006-02-12
request.setCharacterEncoding在JSP中有BUG不要用

用new String("".getBytes("iso8859-1"),"_encodingClass")

_encodingClass 填写你上一个页面的编码
回复
1. 首先要看 A 页面是什么编码,提交的数据的编码与 A 页面编码一致。

2. 在 B 页面中使用
request.setCharacterEncoding("与 A 页面一致的编码")

3. 直接 request.getParameter 就可以了,不需要再进行转化。
回复
这样的用法不是万能的:new String(str.getBytes("iso-8859-1"))。
为什么有时候这样做又是对的,其中的道理是什么。

推荐楼主看一篇文章,理解其中的原理:
http://www.regexlab.com/zh/encoding.htm
回复
wmkoyo 2006-02-12
public String getString(str)
{
byte[] s=str.getBytes("ISO8859-1");
str=new String(s);
return str;
}
回复
tlowl 2006-02-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"));

像这样应该就好用了,不过这种方法确实不是万能的,有时候也会出乱码,当然这种也是最简单的
回复
725137 2006-02-12
还有就是这里

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");
回复
725137 2006-02-12
加一句<%@ page language="java" pageEncoding="GB2312"%>
回复
aoliwen521 2006-02-11
我每个上面都有<%@ page contentType="text/html;charset=gb2312" %>
没有用啊
回复
Paripatetic 2006-02-11
<%@ page contentType="text/html;charset=gb2312" %>
回复
rickhunterchen 2006-02-11
看看这个帖子
http://community.csdn.net/Expert/TopicView3.asp?id=4547791
回复
aoliwen521 2006-02-11
具体说是3个问好,
总是无法显示汉字。
回复
aoliwen521 2006-02-11
抱歉,还是乱码。
回复
cathl 2006-02-11
另外,用<%@ page contentType="text/html;charset=UTF-8" %> 好一点

结果如何记得给个回复。
回复
cathl 2006-02-11
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"));
回复
aoliwen521 2006-02-11
有没有高手指点一下啊
回复
相关推荐
发帖
Web 开发
创建于2007-09-28

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2006-02-11 11:29
社区公告
暂无公告