我用过滤器写了一个处理乱码的类:
package com.zhdz.filter;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 {

private String charset; public void destroy() {
// TODO Auto-generated method stub } public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
// TODO Auto-generated method stub
arg0.setCharacterEncoding(charset);
arg1.setCharacterEncoding(charset);
arg2.doFilter(arg0, arg1); } public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub

this.charset = arg0.getInitParameter("charset"); }}web.xml配置如下:
<filter>
   <filter-name>Encoding</filter-name>
   <filter-class>com.zhdz.filter.EncodingFilter</filter-class>
   <init-param>
   <param-name>charset</param-name>
   <param-value>GBK</param-value>
   </init-param>
  </filter>
  <filter-mapping>
   <filter-name>Encoding</filter-name>
   <url-pattern>/*</url-pattern>
  </filter-mapping>但是就是不起作用,我在别的项目里都这么写都有用。那是为什么?以上哪里有错吗?或是哪里漏了步骤?请教高手。不胜感激

解决方案 »

  1.   

    平常我们都是用rquest.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=utf-8");不知道楼主用两个同样的能否起作用,本人新手,说错了不要见怪,
      

  2.   

    数据库编码没问题,我用其他项目试过,不会出现乱码
    其他项目都是用gbk
      

  3.   

    你在tomcat里加上 URIEncoding="UTF-8" 这个编码 如果是gbk 的话就改把
    UTF-8改为dbk
    <Connector port="8080" protocol="HTTP/1.1" URIEncoding="UTF-8"
                   connectionTimeout="20000"
                   redirectPort="8443" />
      

  4.   

    我靠就这个项目是这样,其他的就不是这样,真是郁闷,我都把tomcat重装了好几遍,把这个项目部署了好几遍,重启了好几遍,我又用其他技术做了也是这样,从来不会出现这种情况,真是见鬼了
      

  5.   

    不要灰心,一点一点搞清楚它。首先你的JSP编码是如何的(charset,pageEncoding),然后工程编码,然后猫配置的编码,然后提交的方式,普通的还是AJAX(特别是JQuery ajaxSubmit)
      

  6.   

    楼主你试试 在tomcat里的server.xml 文件上加上 加上URIEncoding="GBK" 
     
      

  7.   

    1.tomcat中conf文件下的server.xml中 加 URIEncoding="GBK"
    2.项目中所有文件都设成GBK
    3.过滤器中用GBKLZ检查下做到了吗   
      

  8.   

    package org.filter;
    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 FilterChar implements Filter{ public void destroy() {
    // TODO Auto-generated method stub

    }
    public void doFilter(ServletRequest arg0, ServletResponse arg1,
    FilterChain arg2) throws IOException, ServletException {
    // TODO Auto-generated method stub
    arg0.setCharacterEncoding("UTF-8");
    arg2.doFilter(arg0, arg1);
    }
    public void init(FilterConfig arg0) throws ServletException {
    // TODO Auto-generated method stub

    }

    } <filter>
       <filter-name>char</filter-name>
       <filter-class>org.filter.FilterChar</filter-class>
      </filter>
      <filter-mapping>
       <filter-name>char</filter-name>
       <url-pattern>/*</url-pattern>
      </filter-mapping>
      

  9.   

    楼主应该注意注意你的编码过滤器的先后顺序,由于过滤器是根据 <filter-mapping> 的配置顺序来依次调用的,
    所以对于字符编码过滤器理应当排在最前面;
      

  10.   

    用的工具是MyEclipse6.5,tomcat6.5,jdk6.0
      

  11.   

    你jsp页面上的编码也改成同样的,GBK试试
      

  12.   


    这种写法是只是征对<form>标签请求为method="get"时候才会有效果,对post是不起作用的,乱码这个问题很多情况,你的过滤器没有问题的话还有可能是页面包含的问题,有一次我就经历过struts配置里把一个input=""属性写成了include结果就出现了乱码怎么改也没用,找了大半天,整个项目别的页面都好好的,就这一个页面就现了问题,但是当我单独通过url方式来访问页面的时候又不会出现乱码,后来找原因才找出来是因为页面包含的时候出错了,看下是否能给你的点启示,最好先在项目里单独访问下那个页面
      

  13.   

    建议楼主把页面的代码和配置文件以及操作的类都贴出来,格式,保存整齐
    FORM:QQ群Java 2  Enterprise Edition(88509302)