zgsmile 2015-03-11 06:17 采纳率: 0%
浏览 1739

filter解决字符编码失效

//web.xml中配置filter
//filter实现
//action中查看filter效果
我在filter中配置的编码类型是ISO-8859-1,但是查看时总是UTF-8

  • 写回答

1条回答 默认 最新

  • KK_PLC 2015-03-12 12:14
    关注


    CharacterEncodingFilter
    cn.jbit.housestruts.filter.CharacterEncodingFilter

    encoding
    GBK



    CharacterEncodingFilter
    /*

    import javax.servlet.FilterConfig;
    

    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    import javax.servlet.http.HttpServletRequest;

    public class CharacterEncodingFilter implements Filter{

      private FilterConfig filterConfig;   
    private String encoding = null;   
    
    public void init(FilterConfig filterConfig) throws ServletException {   
        this.filterConfig = filterConfig;   
    }     
    /**
     * 过滤器
     */
    
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException,   
            ServletException {   
        try {   
            if (encoding == null) {   
                encoding = filterConfig.getInitParameter("encoding");   
            }   
        } catch (Exception iox) {   
            iox.printStackTrace();   
        }   
        request.setCharacterEncoding(encoding);   
        response.setCharacterEncoding(encoding);   
        HttpServletRequest req = (HttpServletRequest) request;   
    
        // get请求时,重新编码   
        if ("GET".equals(req.getMethod())) {   
            Enumeration names = request.getParameterNames();   
            while (names.hasMoreElements()) {   
                String name = (String) names.nextElement();   
                String[] values = request.getParameterValues(name);   
                for (int i = 0; i < values.length; i++) {   
                    values[i] = new String(values[i].getBytes("ISO-8859-1"), encoding);   
                }   
            }   
        }   
        filterChain.doFilter(request, response);   
    }   
    
    public void destroy() {   
        filterConfig = null;   
        encoding = null;   
    }   
    

    }

    这次你再试试,应该不会出问题了...

    评论

报告相同问题?