html页面透过Filter过滤器后部分中文乱码

html页面经过Filter过滤器后部分中文乱码
现象描述:
我部署了一个Java web应用,项目全部采用utf-8编码,在web.xml中配置了两个页面需要经过过滤器的登录和权限判定处理,其他页面不做处理,如下:
<init-param>
      <param-name>filterPages</param-name>
      <param-value>/main.html,/admin/adminMain.html</param-value>
    </init-param>
  </filter>
启动tomcat后,开始都能正常访问,也没有乱码。
于是乎,我某天在ie下将访问main.html时,邮件将编码从utf-8改为了gbk,出现了乱码,然后我又改回了utf-8,此时页面的title和页面上的两个超链接上的文字都变成了乱码:
html页面透过Filter过滤器后部分中文乱码
服务器上的文件编码都是正常的,我在未手动修改浏览器中页面编码前都正常,就是改了后才出现该问题,而且自从我改了以后在其他人的电脑*问也有这个问题,实在不明白我在浏览器上做了修改怎么就影响到服务器上了呢?
重启tomcat,重新部署项目都没用,今天将main.html文件重命名为a.html后再访问又一切正常,才发现应该是Filter搞的鬼,可是我在过滤器中也没做什么特殊处理,为何如此呢?Filter的代码如下:
   public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
        throws IOExceptionServletException
    {
        HttpServletRequest httpRequest = (HttpServletRequest)request;  
        String rootPath=httpRequest.getContextPath();
        String path = httpRequest.getServletPath();
        System.out.println(path);
        if(StringUtil.splitAllToArrayList(filterPages).contains(path)){
         request.setCharacterEncoding("utf-8");
         response.setContentType("text/html;charset=utf-8");
            response.setCharacterEncoding("utf-8");
            PrintWriter out = response.getWriter();
            
         HttpSession session = httpRequest.getSession();
         String isLogin = (String) session.getAttribute("isLogin");
            if(isLogin == null || !isLogin.equals("yes")){
                out.print("<script type=\"text/javascript\">");
out.print("alert('您还没有登录,请先登录!');window.location='"+rootPath+"/login.html';");
out.print("</script>");
            }
            else{
             String userAccount = (String) session.getAttribute("userAccount");
             Dao dao = DaoFactory.getDao();
             List<Role> roles =dao.query(Role.class, Cnd.wrap("userAccount='"+userAccount+"'"));
          List<String> roleNames = new ArrayList<>();
          for (Role role : roles) {
roleNames.add(role.getRole());
}
          //登录后直接访问该地址时验证
          if("/admin/adminMain.html".equals(path) && ! roleNames.contains("administrator")){
          out.print("<script type=\"text/javascript\">");
     out.print("alert('您没有访问权限!');window.location='"+rootPath+"/login.html';");
     out.print("</script>");
          }else
                    chain.doFilter(request, response);            
            }
            out.close();
        }else {
            chain.doFilter(request, response);
    }
}
在后来的测试中,现在只要任何html文件重命名为main.html都会有这个问题,折腾了好久都没解决,特来请教各位高人,先谢过了!分不多了,望见谅。
------解决方案--------------------
对于在客户端浏览器中改了编码而影响服务器,这种可能性基本上没有,可能这个问题一直就有,只是没有被发现而已。

java出现乱码无非那么几种情况,你得一个一个去排除。
你先看是什么部分内容出现乱码
1、是jsp中的内容乱码
2、数据库中的存储的内容是乱码
3、数据库中存储的不是乱码,但是取到jsp中显示出现乱码
4、客户端提交的内容乱码
等等那么几种,先确定是什么样的情况下出现乱码,再来查找问题是出在什么地方。