开发者社区> 问答> 正文

filter解决字符编码失效

screenshot
我在filter中配置的编码类型是ISO-8859-1,但是查看时总是UTF-8

展开
收起
蛮大人123 2016-02-21 18:01:42 2341 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪
    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;   
    }   
    }

    试一试以上code。问题可以解决了。

    2019-07-17 18:46:14
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载