日期:2014-05-18  浏览次数:20705 次

乱码问题,这回不一般,向高手们求解,谢谢!
页面:html页面(中文)
过滤器:配置过滤为*.html的所有页面
        
        Filter 的 doFilter方法中
        .....
        request.setCharacterEncoding(utf-8);   
        response.setCharacterEncoding(utf-8);

        PrintWriter out =response.getWriter();//问题出现在这行加与不加上,加了HTML中文乱码,但下面的输出是正常,没有这一行测页面HTML显示正常        
        out.print("这里页面输出没有中文乱码");
        .....

有各位解释一下为什么加不加response.getWriter();会出现编码问题
------解决方案--------------------
既然是过滤器, PrintWriter out =response.getWriter();就不应该出现
filterChain.doFilter(req, ares); 
------解决方案--------------------
加 了会乱码?请求和相应都是utf8,你看看html的页面编码是什么格式的?
------解决方案--------------------
你没有加响应的设置就正常,说明你的编码错误是页面传送过来和你后台显示中有不一致的地方啊。我是这样分析的

------解决方案--------------------
response.setContentType("text/html; charset=utf-8");
------解决方案--------------------
楼主,将你即将响应的内容设置如下:

   response.setContentType("text/html; charset=utf-8");
  
------解决方案--------------------
兄弟,你好。

PrintWriter out = response.getWriter();
out.print("这里页面输出没有中文乱码");

PrintWriter使用返回的字符编码getCharacterEncoding()。如果响应中描述的字符编码未指定为getCharacterEncoding(即。,该方法只是返回默认值iso-8859-1)。
所以我建议楼主兄弟在使用如下代码
 
PrintWriter out = response.getWriter();
out.print("这里页面输出没有中文乱码");
时,首先通过
response.getCharacterEncoding();
查看一下当前返回的字符编码