一个最基础的网站,本来访问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");
回答对你有帮助的话,记得采纳,谢谢