jsp表单提交中文乱码问题

kurorohisoka 2009-04-01 11:44:52
我上网查过了,加上request.setCharacterEncoding("utf-8");还是显示乱码,环境是Myeclipse+Tomcat,望大家解决一下,谢谢!!
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
request.setCharacterEncoding("utf-8");

String path = request.getContextPath();
String queryString= request.getParameter("queryString");
System.out.println(queryString);
%>
<html>
<body>
<form action="index.jsp">
<input type="text" name="queryString"/>
<input type="submit" value="搜索"/>
</form>

</body>
</html>
...全文
2224 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
wensefu 2010-08-25
  • 打赏
  • 举报
回复
get方式的话是把文字放在url中传递的......
乱码问题让人烦不胜烦。多谢这位大虾的提醒了。。
vgcat 2009-09-01
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 javabeginner2006 的回复:]
哎!狂晕!
以上所有的解决方案的前提都是表单以post方式传送数据。
如果没有写明,则默认为get方式,get方式的话是把文字放在url中传递的。故此必须在tomcat的server.xml中设置URLEncoding。

解决方案有二:
1、在form元素中增加一个method="post"
2、页面不做变更,在tomcat的server.xml中设置URLEncoding="UTF-8"或者"GBK"
[/Quote]
这里是URIEncoding="GBK" ,不是URLEncoding="GBK"
hoojo 2009-04-01
  • 打赏
  • 举报
回复
String queryString = new String(request.getParameter("queryString").getBytes("ISO-8859-1","utf-8"));
兄弟这样一个可以了吧!
试试看哦
^_*
Sou2012 2009-04-01
  • 打赏
  • 举报
回复
过滤一下吧
csouyangjun 2009-04-01
  • 打赏
  • 举报
回复
String queryString= new String (request.getParameter("queryString").getBytes,"ISO8859-1");
这样的话就不怕了。
不过这样很烦,要从根本上解决这个问题,就要写个过滤器
mumu_java 2009-04-01
  • 打赏
  • 举报
回复
数据从哪个页面或servlet传过来的,那个页面中也要设置一下编码才行。
kurorohisoka 2009-04-01
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 chenxinhong98 的回复:]
response也要设置编码response.setCharacterEncoding("utf-8");
[/Quote]
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");

String path = request.getContextPath();
String queryString= request.getParameter("queryString");
System.out.println(queryString);
%>
<html>
<body>
<form action="index.jsp">
<input type="text" name="queryString"/>
<input type="submit" value="搜索"/>
</form>

</body>
</html>

这样还显示不了中文
酒浪子 2009-04-01
  • 打赏
  • 举报
回复
response也要设置编码response.setCharacterEncoding("utf-8");
kurorohisoka 2009-04-01
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 javabeginner2006 的回复:]
哎!狂晕!
以上所有的解决方案的前提都是表单以post方式传送数据。
如果没有写明,则默认为get方式,get方式的话是把文字放在url中传递的。故此必须在tomcat的server.xml中设置URLEncoding。

解决方案有二:
1、在form元素中增加一个method="post"
2、页面不做变更,在tomcat的server.xml中设置URLEncoding="UTF-8"或者"GBK"
[/Quote]
谢谢!根据你的方法解决了
javabeginner2006 2009-04-01
  • 打赏
  • 举报
回复
哎!狂晕!
以上所有的解决方案的前提都是表单以post方式传送数据。
如果没有写明,则默认为get方式,get方式的话是把文字放在url中传递的。故此必须在tomcat的server.xml中设置URLEncoding。

解决方案有二:
1、在form元素中增加一个method="post"
2、页面不做变更,在tomcat的server.xml中设置URLEncoding="UTF-8"或者"GBK"
zl_20090320 2009-04-01
  • 打赏
  • 举报
回复
检查过滤器的编码设置
老紫竹 2009-04-01
  • 打赏
  • 举报
回复
1 去掉你所有的过滤器
2 去掉你所有的web.xml里面关于字符集的配置
3 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
修改为
<%@page contentType="text/html;charset=UTF-8" language="java" pageEncoding="utf-8"%> 

4 你的代码就可以正确运行了。




[img=http://www.java2000.net/images/company/www.java2000.net.gif]提供最全面最实用的Java面试题,智力面试题,面试技巧,JAVA自测题,Java代码,Java项目,Java学习资料,JAR下载[/img]
耶律火柴 2009-04-01
  • 打赏
  • 举报
回复
注意如果有多个过滤器要把这个放最前面
耶律火柴 2009-04-01
  • 打赏
  • 举报
回复
web.xml里的配置
<filter>
<filter-name>Filter</filter-name>
<filter-class>
utils.info.EncodingFilter<!-- 过滤器类 -->
</filter-class>
<init-param>
<param-name>Encoding</param-name>
<param-value>GBK</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

过滤器类:
/**
*
*/
package utils.info;

/**
* @author sy
*
*/
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 EncodingFilter implements Filter {
protected FilterConfig config;

protected String Encoding = null;

public void init(FilterConfig config) throws ServletException {

this.config = config;
this.Encoding = config.getInitParameter("Encoding");

}

public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {

if (request.getCharacterEncoding() == null) {
if (Encoding != null) {
request.setCharacterEncoding(Encoding);
response.setCharacterEncoding(Encoding);
}
}
chain.doFilter(request,response);
}
public void destroy() {}
}

加上这个过滤器,可以解决大部分问题




Jack_Wangpili 2009-04-01
  • 打赏
  • 举报
回复
可以把你的那个页面也设置成”GBK“ 我现在都是这样写的,可以显示中文

81,092

社区成员

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

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