jsp post 表单提交 中文乱码 高高帮帮忙回答啊 在线等待求答

时间:2023-02-06 13:08:33
我的问题是这样的:
一个form 表单里有个文本框:输入英文,在给struts(1.3)的formbean 赋值时没问题,但是,输入中文时,formbean 对应的属性就会出现乱码啦。
(struts 和jpa 及spring 集成的一个项目)

<form action="/product/query.do" method="post" name="search" id="search">

     商品搜索:<input id="word" name="word" accesskey="s" size="100" maxlength="100" value=""/>

     <input type="submit" value="搜 索" id="DoSearch"/>
</form>


action:


@Controller("/product/query")
public class ProductQueryAction extends Action {
@Resource ProductSearchService productSearchService;

@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {

ProductQueryForm formbean = (ProductQueryForm) form;=================》》》中文赋值时有乱码
PageView<ProductInfo> pageView = new PageView<ProductInfo>(12,formbean.getPage());
pageView.setQueryResult(productSearchService.search(formbean.getWord(), 
pageView.getFirstResult(), pageView.getMaxresult()));

request.setAttribute("pageView", pageView);
return mapping.findForward("list");
}

}

26 个解决方案

#1


post表单传递参数乱码 接受参数乱码编码
* 通过jsp页面,html页面或者servlet中的表单元素提交参数给对应的jsp页面或servlet
而jsp和servlet接收的参数产生中文乱码
* 在接收post提交的参数之前,使用request.setCharactEncoding("utf-8")设定接收参数的内容使用"utf-8"编码
* 更好的解决办法是添加过滤器

#2


引用 1 楼 swandragon 的回复:
post表单传递参数乱码 接受参数乱码编码
* 通过jsp页面,html页面或者servlet中的表单元素提交参数给对应的jsp页面或servlet
而jsp和servlet接收的参数产生中文乱码
* 在接收post提交的参数之前,使用request.setCharactEncoding("utf-8")设定接收参数的内容使用"utf-8"编码
* 更好的解决办法是添加过滤器

这些方法我都用上啦,可是还没有效果呢?
我上网搜了好多,都不行啊 求高手啦

#3


你jsp中的编码是什么?
gbk?  gb2312、?  utf8?  

#4


UTF-8 

#5


在过滤器中设置request的编码为UTF-8,在JSP中也设置编码为UTF-8

#6


这个也试过了,也在web.xml配置好了,还是不行啊,困扰了我一整天了……

#7


你加过滤器 也不行么?
不行 我也就米法了

#8


在tomcat设置一下

#9


网上说 :tomcat 对于处理post 和get 方式的请求,处理方法不一样,get 要在(tomcat-->config.xml-->server.xml 中 加个 URIEncoding="gbk"……,都不行啊。

是不stuts 和spring 集成造成的呢?

#10


引用 8 楼 pangpanglovezz 的回复:
在tomcat设置一下

在tomcat里 是不是加个 URIEncoding="gbk",还是其它高见,说出具一点啊 

#11


重新写页面吧!不行了换个环境试试!估计是你开发环境的问题

#12


所有涉及到传参的地方设置统一utf-8试试看

#13


还有 tomcat也设置一下 试试  不行 我也不知道怎么办了 不好意思

#14


 设置一个过滤器,

#15


有中文的情况下,JSP的编码肯定是GB2312、GBK、UTF-8中的一种,也是是JSP页面上pageEncoding。
JSP页面编码方式设置好以后,通过POST方式传值,还要设置request.setCharacterEncoding("XXX"),其中XXX和你在JSP页面设置的编码方式一样。
如果从Servelet中取数据到JSP页面上,还要设置response.setContentType("XXX"),其中XXX跟JSP页面上的也一样

#16




       查看一下你的jsp页面的编码和action中的编码是否相同 

#17


在request、response中设置了setContentType值,用过滤器也不行还真没有遇到过,
楼主自己换个环境吧!
帮顶啊 !

#18


过滤器乱码问题终于解决:
感谢朋友热心的参与:
首先讲一下我的问题:
我的问题是出在:
在配置过滤器时:位置不对。
我的项目中有8、9个filter ,应该把过滤字符编码的放在第一位,这样,就像一个链条一样,第一个一定把字符放好。

其它的:都是小意思了。顺便提一下:
1:jsp 页面有乱码:pageEncode=utf8
2:servlet-->jsp 乱码:在sevlet里:
request.setCharacterEncoding("utf-8");
response.setContentType("text ml;charset=UTF-8");
3:表单参数乱码:
   post:过滤器来处理:(网上很多)
4:URI 参数乱码:
   配置tomcat(server.xml 加入URIEncoding="utf-8")
5:property乱码:
  下个日本鬼子写的:jp.gr.java_conf.ussiy.app.propedit_4.8.2_for_eclipse3.0.zip   
 
最后,最重要的一点:就是我琢磨了整整一整天的当有多个filter时:处理文字乱码的要放在第一个位置。 

#19


自己写一个servelt过滤器试试

#20


uft-8 过滤器 网上很多的
package filter; 

import java.io.IOException; 

import javax.servlet.FilterChain; 
import javax.servlet.FilterConfig; 
import javax.servlet.ServletException; 
import javax.servlet.ServletRequest; 
import javax.servlet.ServletResponse; 

public class Filter implements javax.servlet.Filter { 

public void destroy() { 
// TODO Auto-generated method stub 



public void doFilter(ServletRequest request, ServletResponse response, 
FilterChain chain) throws IOException, ServletException { 
request.setCharacterEncoding("utf-8"); 
chain.doFilter(request, response); 


public void init(FilterConfig arg0) throws ServletException { 
System.out.println("filter--------init?"); 



}

#21


引用 18 楼 garysgarys 的回复:
过滤器乱码问题终于解决:
感谢朋友热心的参与:
首先讲一下我的问题:
我的问题是出在:
在配置过滤器时:位置不对。
我的项目中有8、9个filter ,应该把过滤字符编码的放在第一位,这样,就像一个链条一样,第一个一定把字符放好。

其它的:都是小意思了。顺便提一下:
1:jsp 页面有乱码:pageEncode=utf8
2:servlet-->jsp 乱码:在sevlet里:
request.setCharacterEncoding("utf-8");
response.setContentType("text ml;charset=UTF-8");
3:表单参数乱码:
  post:过滤器来处理:(网上很多)
4:URI 参数乱码:
  配置tomcat(server.xml 加入URIEncoding="utf-8")
5:property乱码:
  下个日本鬼子写的:jp.gr.java_conf.ussiy.app.propedit_4.8.2_for_eclipse3.0.zip 

最后,最重要的一点:就是我琢磨了整整一整天的 当有多个filter时:处理文字乱码的要放在第一个位置。


学习

#22


把jsp 页面中<page >编码格式改成utf-8或者gbk或者gb2312

#23


引用 21 楼 wenjjing2lianee 的回复:
引用 18 楼 garysgarys 的回复:
过滤器乱码问题终于解决:
感谢朋友热心的参与:
首先讲一下我的问题:
我的问题是出在:
在配置过滤器时:位置不对。
我的项目中有8、9个filter ,应该把过滤字符编码的放在第一位,这样,就像一个链条一样,第一个一定把字符放好。

其它的:都是小意思了。顺便提一下:
1:jsp 页面有乱码:pageEncode=utf8
2:servlet-->jsp 乱码:在sevlet里:
request.setCharacterEncoding("utf-8");
response.setContentType("text ml;charset=UTF-8");
3:表单参数乱码:
  post:过滤器来处理:(网上很多)
4:URI 参数乱码:
  配置tomcat(server.xml 加入URIEncoding="utf-8")
5:property乱码:
  下个日本鬼子写的:jp.gr.java_conf.ussiy.app.propedit_4.8.2_for_eclipse3.0.zip 

最后,最重要的一点:就是我琢磨了整整一整天的 当有多个filter时:处理文字乱码的要放在第一个位置。


学习

me too

#24


怎么这么多人遇到乱码问题啊。如果在项目组的话,最好每个人都统一下编码,我现在的项目都使用UTF-8,没有乱码的问题,也没有写设置字符编码的过滤器,很方便的!

#25


你所传递的数据是从数据库中查询出来的吗·?
  

  要是从数据库中查询的数据进行传递··

  看看数据库中的数据是否乱码··、 
   
   可能于数据库有关。。。。
    
   

#26


该回复于2010-01-09 09:04:24被版主删除

#1


post表单传递参数乱码 接受参数乱码编码
* 通过jsp页面,html页面或者servlet中的表单元素提交参数给对应的jsp页面或servlet
而jsp和servlet接收的参数产生中文乱码
* 在接收post提交的参数之前,使用request.setCharactEncoding("utf-8")设定接收参数的内容使用"utf-8"编码
* 更好的解决办法是添加过滤器

#2


引用 1 楼 swandragon 的回复:
post表单传递参数乱码 接受参数乱码编码
* 通过jsp页面,html页面或者servlet中的表单元素提交参数给对应的jsp页面或servlet
而jsp和servlet接收的参数产生中文乱码
* 在接收post提交的参数之前,使用request.setCharactEncoding("utf-8")设定接收参数的内容使用"utf-8"编码
* 更好的解决办法是添加过滤器

这些方法我都用上啦,可是还没有效果呢?
我上网搜了好多,都不行啊 求高手啦

#3


你jsp中的编码是什么?
gbk?  gb2312、?  utf8?  

#4


UTF-8 

#5


在过滤器中设置request的编码为UTF-8,在JSP中也设置编码为UTF-8

#6


这个也试过了,也在web.xml配置好了,还是不行啊,困扰了我一整天了……

#7


你加过滤器 也不行么?
不行 我也就米法了

#8


在tomcat设置一下

#9


网上说 :tomcat 对于处理post 和get 方式的请求,处理方法不一样,get 要在(tomcat-->config.xml-->server.xml 中 加个 URIEncoding="gbk"……,都不行啊。

是不stuts 和spring 集成造成的呢?

#10


引用 8 楼 pangpanglovezz 的回复:
在tomcat设置一下

在tomcat里 是不是加个 URIEncoding="gbk",还是其它高见,说出具一点啊 

#11


重新写页面吧!不行了换个环境试试!估计是你开发环境的问题

#12


所有涉及到传参的地方设置统一utf-8试试看

#13


还有 tomcat也设置一下 试试  不行 我也不知道怎么办了 不好意思

#14


 设置一个过滤器,

#15


有中文的情况下,JSP的编码肯定是GB2312、GBK、UTF-8中的一种,也是是JSP页面上pageEncoding。
JSP页面编码方式设置好以后,通过POST方式传值,还要设置request.setCharacterEncoding("XXX"),其中XXX和你在JSP页面设置的编码方式一样。
如果从Servelet中取数据到JSP页面上,还要设置response.setContentType("XXX"),其中XXX跟JSP页面上的也一样

#16




       查看一下你的jsp页面的编码和action中的编码是否相同 

#17


在request、response中设置了setContentType值,用过滤器也不行还真没有遇到过,
楼主自己换个环境吧!
帮顶啊 !

#18


过滤器乱码问题终于解决:
感谢朋友热心的参与:
首先讲一下我的问题:
我的问题是出在:
在配置过滤器时:位置不对。
我的项目中有8、9个filter ,应该把过滤字符编码的放在第一位,这样,就像一个链条一样,第一个一定把字符放好。

其它的:都是小意思了。顺便提一下:
1:jsp 页面有乱码:pageEncode=utf8
2:servlet-->jsp 乱码:在sevlet里:
request.setCharacterEncoding("utf-8");
response.setContentType("text ml;charset=UTF-8");
3:表单参数乱码:
   post:过滤器来处理:(网上很多)
4:URI 参数乱码:
   配置tomcat(server.xml 加入URIEncoding="utf-8")
5:property乱码:
  下个日本鬼子写的:jp.gr.java_conf.ussiy.app.propedit_4.8.2_for_eclipse3.0.zip   
 
最后,最重要的一点:就是我琢磨了整整一整天的当有多个filter时:处理文字乱码的要放在第一个位置。 

#19


自己写一个servelt过滤器试试

#20


uft-8 过滤器 网上很多的
package filter; 

import java.io.IOException; 

import javax.servlet.FilterChain; 
import javax.servlet.FilterConfig; 
import javax.servlet.ServletException; 
import javax.servlet.ServletRequest; 
import javax.servlet.ServletResponse; 

public class Filter implements javax.servlet.Filter { 

public void destroy() { 
// TODO Auto-generated method stub 



public void doFilter(ServletRequest request, ServletResponse response, 
FilterChain chain) throws IOException, ServletException { 
request.setCharacterEncoding("utf-8"); 
chain.doFilter(request, response); 


public void init(FilterConfig arg0) throws ServletException { 
System.out.println("filter--------init?"); 



}

#21


引用 18 楼 garysgarys 的回复:
过滤器乱码问题终于解决:
感谢朋友热心的参与:
首先讲一下我的问题:
我的问题是出在:
在配置过滤器时:位置不对。
我的项目中有8、9个filter ,应该把过滤字符编码的放在第一位,这样,就像一个链条一样,第一个一定把字符放好。

其它的:都是小意思了。顺便提一下:
1:jsp 页面有乱码:pageEncode=utf8
2:servlet-->jsp 乱码:在sevlet里:
request.setCharacterEncoding("utf-8");
response.setContentType("text ml;charset=UTF-8");
3:表单参数乱码:
  post:过滤器来处理:(网上很多)
4:URI 参数乱码:
  配置tomcat(server.xml 加入URIEncoding="utf-8")
5:property乱码:
  下个日本鬼子写的:jp.gr.java_conf.ussiy.app.propedit_4.8.2_for_eclipse3.0.zip 

最后,最重要的一点:就是我琢磨了整整一整天的 当有多个filter时:处理文字乱码的要放在第一个位置。


学习

#22


把jsp 页面中<page >编码格式改成utf-8或者gbk或者gb2312

#23


引用 21 楼 wenjjing2lianee 的回复:
引用 18 楼 garysgarys 的回复:
过滤器乱码问题终于解决:
感谢朋友热心的参与:
首先讲一下我的问题:
我的问题是出在:
在配置过滤器时:位置不对。
我的项目中有8、9个filter ,应该把过滤字符编码的放在第一位,这样,就像一个链条一样,第一个一定把字符放好。

其它的:都是小意思了。顺便提一下:
1:jsp 页面有乱码:pageEncode=utf8
2:servlet-->jsp 乱码:在sevlet里:
request.setCharacterEncoding("utf-8");
response.setContentType("text ml;charset=UTF-8");
3:表单参数乱码:
  post:过滤器来处理:(网上很多)
4:URI 参数乱码:
  配置tomcat(server.xml 加入URIEncoding="utf-8")
5:property乱码:
  下个日本鬼子写的:jp.gr.java_conf.ussiy.app.propedit_4.8.2_for_eclipse3.0.zip 

最后,最重要的一点:就是我琢磨了整整一整天的 当有多个filter时:处理文字乱码的要放在第一个位置。


学习

me too

#24


怎么这么多人遇到乱码问题啊。如果在项目组的话,最好每个人都统一下编码,我现在的项目都使用UTF-8,没有乱码的问题,也没有写设置字符编码的过滤器,很方便的!

#25


你所传递的数据是从数据库中查询出来的吗·?
  

  要是从数据库中查询的数据进行传递··

  看看数据库中的数据是否乱码··、 
   
   可能于数据库有关。。。。
    
   

#26


该回复于2010-01-09 09:04:24被版主删除