日期:2014-05-17  浏览次数:20865 次

jsp参数传递乱码
代码如下:
《jsp文件》
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%request.setCharacterEncoding("GBK");%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  <title></title>
  </head>
  <body>
  <div>
  <form method="post" name="searchform" action="SearchServlet">
  <font face="华文彩云" size="6" style="position:relative;top:6px;">站内搜索</font> 
  <input type="text" name="SearchContent" value="请输入关键字" 
  style="font-size:18px;width:150;height:35; position:relative;top:10px;left:5px;bottom:10px;"
  onmouseover=this.focus();this.select();
  onclick="if(value==defaultValue){value='';this.style.color='#000'}"
  onBlur="if(!value){value=defaultValue;this.style.color='#999'}" />
  <input type="submit" value="" style="background:url(image/find.png);width:35;height:35;position:relative;top:10px;left:5px;">
  </form>  
  </div>
</body>
</html>
《servlet.java文件》
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("GBK");
String SearchContent = new String(request.getParameter("SearchContent").getBytes("ISO-8859-1"),"GBK");
//String SearchContent1 = URLDecoder.decode(request.getParameter("SearchContent"), "GBK");
System.out.println(SearchContent);
}
代码如上所示,但是到最后在控制台打印出来的结果总是乱码,有哪位高手帮忙解决一下,调了一天了,网上的解决办法也看了很多,还是不行。。解决办法不能涉及到修改tomcat的配置文件。。

------解决方案--------------------
在 html 的 head里面加上


<meta http-equiv="Content-Type" content="text/html; charset=gbk"/>

这样在浏览器提交表单的时候会把数据进行gbk编码

------解决方案--------------------
new String(request.getParameter("typename").getBytes("ISO-8859-1"),"utf-8")试试
jsp页面改成utf-8编码
------解决方案--------------------
探讨

在 html 的 head里面加上


<meta http-equiv="Content-Type" content="text/html; charset=gbk"/>

这样在浏览器提交表单的时候会把数据进行gbk编码

------解决方案--------------------
楼上的,应该可以的。
------解决方案--------------------
jsp 头部改成 pageEncoding="UTF-8"

另外你这里是post提交,代码怎么粘的
public void doGet(HttpServletRequest request, HttpServletResponse response)

是粘错了,还是实际代码就是错的,在doPost方法里处理post提交。
------解决方案--------------------
Java code

 //在doPost里面  这个是针对POST提交的
request.request.setCharacterEncoding("GBK");

/*这是针对GET方式提交的
String SearchContent = new String(request.getParameter("SearchContent").getBytes("ISO-8859-1"),"GBK");*/

------解决方案--------------------
把响应格式也设置成GBK格式。