jsp中servlet提交表单出现乱码

madiankun 2009-04-11 08:29:59
如标题所示:运行时出现乱码。用eclipse+lomboz+jboss开发,表单代码如下:
<!DOCTYPE HTML PUBLIC "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
<title>提交表单数据</title>
</head>
<body bgcolor="#FFFFFF">
<h1 align="center"><b>欢迎登录系统</b></h1>
<form action="getpostdata" method="post">
<p></p>
<table width="52%" border="2" align="center">
<tr bgcolor="#FFFFCC">
<td align="center" width="43%"><div align="center">用户名:</div></td>
<td width="57%"><div align="left">
<input type="text" name="username">
</div></td>
</tr>
<tr bgcolor="#CCFF99">
<td align="center" width="43%"><div align="center">密码:</div></td>
<td width="57%"><div align="left">
<input type="password" name="password">
</div></td>
</tr>
</table>
<p align="center">
<input type="reset" name="Reset" value="重置">
<input type="submit" name="Submit2" value="提交">
</p>
</form>
</body>
</html>
运行结果如下:
娆㈣繋鐧诲綍绯荤粺

鐢ㄦ埛鍚?
瀵嗙爜:


...全文
286 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
elliotann 2009-04-16
  • 打赏
  • 举报
回复
实在是没办法写一个过滤器类吧
zhuwen9 2009-04-12
  • 打赏
  • 举报
回复
哦..好像在html网页中只能使用GBK
jsp中才能使用UTF-8
wanghao1987 2009-04-12
  • 打赏
  • 举报
回复
在你的action中加上request.setCharacterEncoding("GB2312");
豆虫 2009-04-12
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 chenxinhong98 的回复:]
建议加上过滤器
Java code

package com.house.filter;

import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class Encoding implements Filter {

public Encoding() {
}

public void doFilter(Serv…
[/Quote]
顶一下,不过最好编码方式改成utf-8
chejingquan 2009-04-12
  • 打赏
  • 举报
回复
14楼说的是可行的,你试试吧,加上过滤器
  • 打赏
  • 举报
回复
没转码。像上面说的。过滤器很好。
java_coding 2009-04-12
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 chenxinhong98 的回复:]
建议加上过滤器

Java code
package com.house.filter;

import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class Encoding implements Filter {

public Encoding() {
}

public …
[/Quote]

赞成 顶~~~
瞎胡扯 2009-04-12
  • 打赏
  • 举报
回复
这个需要过滤器使用request.setCharacterEncoding("GB2312"); 是不行的,因为当你从表单中把数据取到时,数据已经变为乱码了。所以要使用过滤器
过滤器的编写和配置
import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;

public class pageEncodingFilter implements Filter {

private String encode;

public void destroy() {
this.encode=null;
}

public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
HttpServletRequest hr=(HttpServletRequest)arg0;
hr.setCharacterEncoding(encode);
arg2.doFilter(arg0, arg1);
}

public void init(FilterConfig arg0) throws ServletException {
String encode=arg0.getInitParameter("encode");
this.encode=encode;
System.out.println("------"+encode);
}

}


在web.xml中的配置

<!--中文过滤器配置!-->
<filter>
<filter-name>pageEncodingFilter</filter-name>
<filter-class>org.tongying.www.model.pageEncodingFilter</filter-class>
<init-param>
<param-name>encode</param-name>
<param-value>gb2312</param-value>
</init-param>
</filter>

<filter-mapping>
<filter-name>pageEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
zhuwen9 2009-04-11
  • 打赏
  • 举报
回复
<!DOCTYPE HTML PUBLIC "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>提交表单数据 </title>
</head>
<body bgcolor="#FFFFFF">
<h1 align="center"> <b>欢迎登录系统 </b> </h1>
<form action="getpostdata" method="post">
<p> </p>
<table width="52%" border="2" align="center">
<tr bgcolor="#FFFFCC">
<td align="center" width="43%"> <div align="center">用户名: </div> </td>
<td width="57%"> <div align="left">
<input type="text" name="username">
</div> </td>
</tr>
<tr bgcolor="#CCFF99">
<td align="center" width="43%"> <div align="center">密码: </div> </td>
<td width="57%"> <div align="left">
<input type="password" name="password">
</div> </td>
</tr>
</table>
<p align="center">
<input type="reset" name="Reset" value="重置">
<input type="submit" name="Submit2" value="提交">
</p>
</form>
</body>

然后记得把response.setContentType("text/html;charset=UTF-8");
项目也用UTF-8的编码
jixiuffff 2009-04-11
  • 打赏
  • 举报
回复
<%@ page pageEncoding="gbk" %>
<% request.setCharacterEncoding="gbk" %>
natty_boy 2009-04-11
  • 打赏
  • 举报
回复
在你的jsp 的顶部加上 <%@ page contentType="text/html; charset=GBK" %> 试试看
h0307 2009-04-11
  • 打赏
  • 举报
回复
在每一个页面的第一行加上这个就行了:request.setCharacterEncoding("GB2312");
heavilyarmed 2009-04-11
  • 打赏
  • 举报
回复
第一行加request.setCharacterEncoding("GB2312");
huangan0301 2009-04-11
  • 打赏
  • 举报
回复
看你的action跳到哪个servlet中的哪个方法,比如doPost()方法~~然后在这个方法中加上1楼的代码~~最好加在第一行
微笑兔 2009-04-11
  • 打赏
  • 举报
回复
说明白点 怎么个执行过程 光看上面的不好判断
guolimin1118 2009-04-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zhj92lxs 的回复:]
servlet中加上这个request.setCharacterEncoding("GB2312");
[/Quote]

在你java加上他就可以
ooo19841080xinxin 2009-04-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 madiankun 的回复:]
怎么改呀,在我给出的源代码上改吧,我还是不太明白!
[/Quote]
把一楼的代码直接放到jsp里应该也可以
Da侠饶命 2009-04-11
  • 打赏
  • 举报
回复
或者加一个编码过滤器,以后就不用愁了
还有数据库也要设置相应的编码
madiankun 2009-04-11
  • 打赏
  • 举报
回复
怎么改呀,在我给出的源代码上改吧,我还是不太明白!
zhj92lxs 2009-04-11
  • 打赏
  • 举报
回复
servlet中加上这个request.setCharacterEncoding("GB2312");

81,111

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧