为什么使用过滤器后,HTML文件中文乱码?

问题遇到的现象和发生背景

一个最基础的网站,本来访问HTML文件没有问题,在使用了过滤器后HTML文件内中文乱码

问题相关代码,请勿粘贴截图

过滤器代码如下

import javax.servlet.*;
import java.io.IOException;

public class TwoFilter implements Filter {
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        //主要报错代码
        servletResponse.setContentType("text/html;charset=UTF-8");

        filterChain.doFilter(servletRequest,servletResponse);
    }
}

运行结果及报错内容

将访问的HTML文件以ANSI编码则变正常

我的解答思路和尝试过的方法

过滤器已经配置好,访问servlet没有乱码问题


public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) throws IOException, ServletException {
        request.setCharacterEncoding("UTF-8");
        chain.doFilter(request, response);
    }

response.setCharacterEncoding("utf-8");//设置服务器端编码
response.setContentType("text/html;charset=utf-8");//设置浏览器端解码
另外,出现中文乱码,要么其中一个编码不对导致。
如果html是gbk,但是服务器是utf也会导致乱码
如果服务端编码格式为utf-8,使用的语句 response.setCharacterEncoding("utf-8");
而我们的编码是GBK,也会乱码。
如果html编码类型为GBK,那么就用response.setContentType("text/html;charset=GBK");
回答对你有帮助的话,记得采纳,谢谢