本人用Tomcat8.5的时候访问HTML页面经常出现乱码,自己写了个过滤器也没能处理乱码问题,而朋友8.0版本的Tomcat都能正常运行,找了很久都不知道原因,在网上查了许多也没有相关内容(或者是相关内容太少不太好找),现在我整理一下处理方法。
Tomcat8.5出现乱码的原因多数是Tomcat配置的问题。我们只需改下Tomcat的配置就行。
首先打开Tomcat的conf文件夹,具体位置在你们安装的路径下面。
选择server.xml编辑它,找到如下内容,并在8443后面添加 URIEncoding=“UTF-8”,我是已经加好了的。
再去web.xml中找如下内容,并添加:
<init-param>
<param-name>fileEncoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
最后去bin文件里面,找到catalina.bat文件找如下内容:
并添加 -Dfile.encoding=UTF8 -Dsun.jnu.encoding=UTF8。
接下来在我们要写得html文件的head里面添加:
<head>
<meta content="text/html"; charset="UTF-8">
<title>Title</title>
</head>
这样乱码问题就解决了。
但是呢!我还出现了问题,在没有添加过滤器的时候,通过网页页面去查找数据库的内容,在页面里面显示的全是问号,显然也是乱码问题,于是写了个过滤器来解决页面中的部分乱码。
@WebFilter("/*")
public class EncodeFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
filterChain.doFilter(request,response);
}
@Override
public void destroy() {
}
}
以上就是我解决本次Tomcat8.5HTML页面出现乱码的方法。