我的项目是ssh,有两个jsp是utf-8的,其他都是gbk的,但是经理让我把他们都统一为gbk的,因为项目到了别的机子上就乱码,后来我把那两个utf-8的内容拷出来,再新建一个名字一样编码为gbk的jsp,把内容拷回去,结果那两个页面获取的数据在action的时候就成乱码了,但是变回utf-8就没事了。。写了过滤器也不行。。 下面那个过滤器我用一个新的例子测过,是有效的,用在我的项目上就不见效果 
   <filter>
        <filter-name>encodingFilter</filter-name>
        <filter-class>
            org.springframework.web.filter.CharacterEncodingFilter
        </filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>GBK</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>encodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
准备上班了,没解决问题郁闷

解决方案 »

  1.   

    楼主最后在action里在转一次~··编码~`用request,跟response在试试~·
      

  2.   


    public class SetCharacterEncodingFilter implements Filter { protected FilterConfig filterConfig;
    protected String encodingName;
    protected boolean enable; public SetCharacterEncodingFilter() {
    encodingName = "GBK";
    enable = false;
    } // 初始化
    public void init(FilterConfig filterConfig) throws ServletException {
    this.filterConfig = filterConfig;
    } // 每个请求设置
    public void doFilter(ServletRequest request, ServletResponse response,
    FilterChain chain) throws IOException, ServletException {
    request.setCharacterEncoding("GBK");   chain.doFilter(request, response); } public void destroy() {
    }
    }
    上面这个也测试过,在新项目上有效,套用到那个项目的两个jsp就无效
      

  3.   

    郁闷,还是不行啊,非要utf-8才行,页面是gbk就获取的数据就乱码见鬼了
      

  4.   

    统一设置成UTF-8多好干嘛非要用GBK。
    如果后台转码后还是错的话 那说明中间就已经乱码了  在form提交前 js操作下内容应该就可以了 
    用encodeURIComponent编码后 在到后台转换 应该就可以了 
    是不是和action的编码环境有关系 我也只是猜测 等高手
      

  5.   

    不知道“在form提交前 js操作下内容”是什么意思?我让js弹出alert('输入的内容'),弹出的不是乱码,
    我又不是经理,所以又不能决定用什么编码 等高手
      

  6.   

    encodeURIComponent编码是什么,怎么弄?
      

  7.   

    我用ajax时经常用到...
    这是js里面的用法,在ajax所在类里面用keyWord = URLEncoder.encode(keyWord,"utf-8");把你把传的keyWord转码一下,在js用decodeURIComponent(keyWord)得到这个传过来的参数;
      

  8.   

    但是我用的formbean哦,<input id="name" type="text" name="adminUser.name" id="name"/>
    用js的话我怎么获取值啊?
      

  9.   

    UTF-8更通用些,国际化些、、、
      

  10.   

     // 每个请求设置
        public void doFilter(ServletRequest request, ServletResponse response,
                FilterChain chain) throws IOException, ServletException {
            request.setCharacterEncoding("GBK");
            response.setCharacterEncoding("GBK");
            chain.doFilter(request, response);    }
    试试
      

  11.   

    记得页面文件,包括JSP,HTML,CSS,JS的文件编码也要改成GBK,
    说的是文件编码,不是头部声明的编码。
      

  12.   

    晕死· 你们经理不懂啊UTF-8就不能显示中文了吗? 如果你们的项目涉及到ajax,当传json串的时候你就更麻烦 哎什么世道,什么叫赢和输哦
      

  13.   

    就算我新建一个jsp,什么css,js都不引用,右键jsp设编码为gbk,然后头部声明也是gbk,也弄了过滤器,在action接到的值还是乱码啊
      

  14.   

    都用utf-8 gbk只是里面的一个子集
      

  15.   

    可能是  post提交和get提交的问题
    我以前遇到过这种问题,不过不知道和你的是否一样
    <script type="text/javascript">
    function go()
    {
       
    var myHref=encodeURI("index.jsp?china=中国人");
    document.all.myAnchor.href=myHref;     </script>action里面这样接收
    request.getParameter("china").getBytes("ISO-8859-1"),"UTF-8";
      

  16.   

    统一编码呀。。
       怎么还有GBK的
         全部统一。
           你们经理很闲是吧。这都管
    统一才是王道其他免谈。。
    对于JS右键属性将编码改为UTF-8就可以了.
          
      

  17.   

    一般在页面,如果出现中文,就应该使用本地化的GBK或GB2312,以方便进行转码
      

  18.   

    UTF8是国际通用的编码,你为什么非要用GBK呢???中文,英文,日文,其它少数 语言都可以正确显示。并且设置方法和设置GBK一样。并不比GBK麻烦。
      

  19.   

    整一个这么雷人的标题,my god!!乱码种类很多,常见的分为get 和 post 乱码。一般过滤器都是对post乱码进行重编译,这就是为什么很多人或是项目用隐藏变量传参了。估计你的是get乱码!使用<c:url>标签就行了,或是你自己写一个编码类标签,如果容器配置url编码,FORM 或是action就会自动转成对应编码格式,这就不用反转编码了。
      

  20.   

    听说request response是以UTF-8传递的.....(新人)
      

  21.   

    你这种情况与request,response对象没有关系,而是你在编辑源代码文件的时候存储的物理文件就是utf-8编码。正确的解决办法是:
    假如你用Dreamweaver来编辑JSP文件,打开原来的utf-8编好的两个文件,按如下步骤:菜单->修改->页面属性->标题/编码->编码=gbk->重新载入->确定,此时,如果jsp文件中的汉字没有出现乱码就保存,否则,先别保存,用记事本打开jsp文件,全选->复制,然后回到Dreamweaver,全选jsp文件内容并删除,保存,然后粘贴记事本中的内容,修改头内容编码格式为gbk,再保存就会以gbk编码存储在磁盘上,这时就会和别的gbk文件一样。
      

  22.   

    使用spring的字符过滤器,在web.xml配置如下:
    <!-- spring encoding -->
    <filter>
    <filter-name>charset-encoding-gbk</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
    <param-name>encoding</param-name>
    <param-value>gbk</param-value>
    </init-param>
    <init-param>
                <param-name>forceEncoding</param-name>  
                <param-value>true</param-value>  
            </init-param>
    </filter>
    <filter-mapping>
    <filter-name>charset-encoding-gbk</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>
      

  23.   

    不是国际化的就没必要用utf-8啊,明知道不可能改成别的语言还要弄个utf-8干嘛,我们项目都用gbk的。。