Filter确保是第一个执行么?
web.xml要先 filer-mapping 再 servlet-mapping

解决方案 »

  1.   

    你lib包里面有Spring的包没?用它的试试,看行不行?<filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>
    org.springframework.web.filter.CharacterEncodingFilter
    </filter-class>
    <init-param>
    <param-name>encoding</param-name>
    <param-value>UTF-8</param-value>
    </init-param>
    </filter>
    <filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>*.jsp</url-pattern>
    </filter-mapping>
      

  2.   

    标准的字符集过滤Filter可以参考tomcat6.0解压缩后的webapps\examples\WEB-INF\classes\filters\SetCharacterEncodingFilter.java文件。
    配置可以看webapps\examples\WEB-INF\web.xml。
      

  3.   

    过滤器
    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 SetCharacterEncodingFilter implements Filter {    protected String encoding = null;    protected FilterConfig filterConfig = null;    protected boolean ignore = true;    public void destroy() {        this.encoding = null;
            this.filterConfig = null;
                }    public void doFilter(ServletRequest request, ServletResponse response,
                             FilterChain chain)
    throws IOException, ServletException {        if (ignore || (request.getCharacterEncoding() == null)) {
                String encoding = selectEncoding(request);
                if (encoding != null)
                    request.setCharacterEncoding(encoding);
            }        chain.doFilter(request, response);    }    public void init(FilterConfig filterConfig) throws ServletException { this.filterConfig = filterConfig;
            this.encoding = filterConfig.getInitParameter("encoding");
            String value = filterConfig.getInitParameter("ignore");
            if (value == null)
                this.ignore = true;
            else if (value.equalsIgnoreCase("true"))
                this.ignore = true;
            else if (value.equalsIgnoreCase("yes"))
                this.ignore = true;
            else
                this.ignore = false;    }    protected String selectEncoding(ServletRequest request) {        return (this.encoding);    }
    }web.xml设置
         <filter>
    <filter-name>SetCharsetEncodingFilter</filter-name>
    <filter-class>[color=#FF0000]过滤器所在。。
    </filter-class>
    <init-param>
    <param-name>encoding</param-name>
    <param-value>UTF-8或者GBK</param-value>
    </init-param>
    </filter>
    [/color]这段代码要在所有<servlet>标签前面
        <filter-mapping>
    <filter-name>SetCharsetEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>
      

  4.   

        这段代码要在所有<servlet>标签前面
        <filter>
    <filter-name>SetCharsetEncodingFilter</filter-name>
    <filter-class>过滤器所在。。</filter-class>
    <init-param>
    <param-name>encoding</param-name>
    <param-value>(自己设定的编码集名称)</param-value>
    </init-param>
    </filter>
               <filter-mapping> 
             <filter-name>SetCharsetEncodingFilter </filter-name> 
             <url-pattern>/* </url-pattern> 
             </filter-mapping>
      

  5.   

    看看你的jsp 编码是不是 gbk 的,你的过滤的时候用的是GBK ,如果你的jsp 编码是UTF-8的话,那么就把你的web里面的那个GBK 给换UTF-8 吧。试试,看看行不?
      

  6.   

    你说的是Spring的哪个包,spring-core.jar?还是……
      

  7.   

    1、你要确认一下是不是走到这个filter
    2、如果走到了的话,你换个charset看看页面上面的字符是不是发生变化
    3、如果发生变化了,说明不是你filter的问题,是你本身页面上面的问题字符编码的问题
      

  8.   

    问题终于得到解决,原来是form表单没有加method="post",都是粗心惹得祸