我用struts开发是,只要一用mapping.findforward,就出现乱码。用EncodingFilter了还是一样!,我把主要代码发出来,大火帮忙看看!
EncodingFilter
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {
    
        if(request.getCharacterEncoding() == null && encoding!=null ){
             request.setCharacterEncoding(encoding);
        }        chain.doFilter(request, response);
    }    public void init(FilterConfig filterConfig) throws ServletException {
        this.filterConfig = filterConfig;
        this.encoding = filterConfig.getInitParameter("encoding");
    }
    public void destroy() {
        this.encoding = null;
        this.filterConfig = null;
    }
web.xml
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>
com.lbj.util.EncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GB18030</param-value>
</init-param>
<init-param>
<param-name>ignore</param-name>
<param-value>true</param-value>
</init-param>
</filter>

<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

解决方案 »

  1.   

    <param-value>GB18030 </param-value> 这是什么编码 ??改成gbk试试 ?
    还有就是页面和过滤器的编码一致 。。应该没问题。。
      

  2.   

    gb18030是亚洲的编码,gbk也只算的它的子集,用gb18030应当没问题,你用的是struts1吧,那个我不是很熟悉,我用的是struts2,这两个有本质的区别,不过乱码问题要看具体是在哪里产生的。总结一下:一般情况下,
    1、如果是在客户端乱码,你则可查看jsp文件<head>部分,增加一个<meta http-equiv="Content-Type" content="text/html;charset=gbk">
    2、如果是服务哭端接收时就乱码了,则分两种情况post:request.setCharacterEncoding("gbk"),get:response.setContentType(HTTP/1.1);和response.setCharacterEncoding("gbk");
    3、如果是在服务哭端响应时乱码了,则要修改web容器的配置文件,增加一个属性:URIEncoding="gbk";
    第3条一般人是不知道的,它还可以解决get方法的AJAX乱码。希望这些能对你有所帮助。
      

  3.   

    public static String toChinese(String strvalue) {
    try {
    if (strvalue == null) {
    return null;
    } else {
    strvalue = new String(strvalue.getBytes("ISO8859_1"), "GBK");
    return strvalue;
    }
    } catch (Exception e) {
    return null;
    }
    }你应该可以看明白吧。这样做比较好维护。用吧