昨天(1024程序员节),debug了大半天,很难受…
起因:
写一个html静态页面,一直没开服务器,基本写完了开服务器测试,就崩溃了:本地打开正常,但在Tomcat上面,css不显示,中文字体乱码(u8,变成了,big5)。
本地打开:
Tomcat上:
尝试:
问了一大圈,可是我该编码的都弄了啊。
html:
Filter:
Project Settings:
Html文件的:
解决:
一直到一个学长,让我尝试重建项目,莫名其妙解决了,所以才想是不是Tomcat缓存问题。因为太晚了,就去睡觉了,结果…
最终解决了一半:
今早起来,又出问题了,同样,一模一样的问题,查阅了一些博客,找到一个解决乱码的方法,打开Tomcat安装目录的bin目录下的catalina.bat,修改 (大概在211行):
set "JAVA_OPTS=%JAVA_OPTS% %JSSE_OPTS%"
为
set "JAVA_OPTS=%JAVA_OPTS% %JSSE_OPTS% -Dfile.encoding=UTF8 -Dsun.jnu.encoding=UTF8"
现在得到的情况:
本地:
Tomcat:
没错,css还是无法加载…
之后又找了一大圈,发现问题出在过滤器,我把过滤器关了,就有css,不关,即使做最简单的处理,也是没有css。
原来的代码(没有css):
req.setCharacterEncoding("utf-8");
rep.setContentType("text/html;charset=utf-8");
rep.setCharacterEncoding("utf-8");
filterChain.doFilter(req, rep);
改了之后(还是没有):
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) rep;
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
response.setCharacterEncoding("utf-8");
String requestURI = request.getRequestURI();
if (requestURI.contains("s/") ||
requestURI.contains("/js/") ||
requestURI.contains("/fonts/") ||
requestURI.contains("/img/") ||
requestURI.contains("/images/") ||
requestURI.contains("/error/")) {
filterChain.doFilter(request,response);
return;
}
有css:
//@WebFilter("/*")
没错,只要把过滤器搞没掉,就有css了,实在是不知道有什么其他的方法,有知道的小伙伴可以在评论区跟我讲下,枯了。