上网查了很多资料,但都没有解决自己的问题。
我在action中
System.out.println(request.getCharacterEncoding());
打印出utf-8
而原页面时pageEncoding="gb2312“的
现在我jsp跳转到action的时候,在action中getParameter 出现乱码
后来用
String search = new String(request.getParameter("search").toString().getBytes("utf-8"),"gb2312");
也没有效果。
大家有什么好方法?

解决方案 »

  1.   

    解决方法如下:1、首先在struts.xml文件中加入<constant name="struts.i18n.encoding" value="gbk" />;2、即然是传递,至少得有两个页面吧,必须将两个页面编码设为一致,如“GBK”或“UTF-8”,另外还得跟struts.xml文件中的编码保持一致,不然起不到效果。最简单的办法就是:需要传递中文的两个页面、struts.xml文件中设置的编码必须保持一致,否则,嘿嘿嘿3、表单提交方式为POST(这个不用说为什么了吧)
      

  2.   

    struts.xml文件中加入<constant name="struts.i18n.encoding" value="gbk" />
    这个我去试试。
      

  3.   

    反了吧,传过来的是页面的,应该是gb2312的不是
    String search = new String(request.getParameter("search").toString().getBytes("gb2312"),"utf-8");
      

  4.   

    首先得确定你程序的编码方式(jsp->js->java->tomcat),
    不能乱来这样的转换:getBytes("gb2312"),"utf-8",别人的不一定合适如果各个部分的编码都一致了,这就好解决了,逐步分析假设你现以统一为gb2312中文从前台提交到达tomcat之前,都是gb2312的编码,但是tomcat是国外人开发的,它接到请求后
    默认会按 ISO-8859-1的编码去转换(这个可以去看tomcat源码),这时就乱了
    故你的String search = new String(request.getParameter("search").toString().getBytes("utf-8"),"gb2312");
    肯定不对了,getBytes("utf-8")你怎么会这么写,请问是出于什么原因???
    不会是utf-8的,除非你把tomcat默认设置改了这样你在request.getParameter的时候也就乱了,所以你要这样一下 .getBytes("ISO-8859-1"),"gb2312",从iso-8859-1再转回gb2312总的流程就是 gb2312--->ISO-8859-1--->gb2312
      

  5.   

    忘说了请求方式的问题写段伪码:method = request.getMethod();//取得请求方式if(method == "POST"){
    这时写个过滤器,request.setCharacterEncoding 为你的统一编码,如gb2312
    这样后面request.getParameter是不会乱码的
    }else{
    对于get请求,就得getBytes...这样转换了
    }另外,对ajax请求的post请求也得按get请求进行转换
      

  6.   

    String search = new String(request.getParameter("search").toString().getBytes("utf-8"),"gb2312");
    没见过你这样的转码方式,getBytes("iso-8859-1"),"utf-8"写个过滤器就可以完成转码了!
    在过滤器里写上:
    request.setCharacterEncoding("utf-8");
    response.setCharacterEncoding("utf-8");
    这样就可以了
      

  7.   

    你程序获取的时候request.setCharacterEncoding("gb2312");设置为编码统一就行了,对于编码问题,没有什么好解决的,保证项目中编码统一就行了!