过滤器中文过滤的时候是乱码而且不能过滤,只能过滤英文怎么修改一下呀?我以为是utf-8的原因,但是加上也没用


package filter;

import java.io.IOException;
import java.util.Arrays;
import java.util.List;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebFilter("/submit_comment")
public class submitcommentfilter implements Filter {
    
    private List<String> dirtyWords = Arrays.asList("你好", "lala", "bubu");

    public void init(FilterConfig config) throws ServletException {
        // 初始化过滤器
    }

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {
        HttpServletRequest req = (HttpServletRequest) request;
        HttpServletResponse res = (HttpServletResponse) response;
        String comment = req.getParameter("comment");

        if (comment != null) {
            // 对参数值进行解码
            comment = java.net.URLDecoder.decode(comment, "UTF-8");
        }

        if (hasDirtyWords(comment)) {
            res.setContentType("text/html; charset=UTF-8");
            res.getWriter().write("您提交的评论含有敏感词汇,请重新输入。");
        } else {
            // 执行下一个过滤器或目标资源
            chain.doFilter(request, response);
        }
    }

    public void destroy() {
        // 销毁过滤器
    }

    private boolean hasDirtyWords(String comment) {
        for (String dirtyWord : dirtyWords) {
            if (comment != null && comment.indexOf(dirtyWord) != -1) {
                return true;
            }
        }
        return false;
    }
}

这样转换一下试试:

comment  = new String(comment.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8);

打断点看下comment值多少