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

jsp页面经过滤器过滤后中文成为乱码
举个例子:
只有注册用户可以进入ticket.jsp页面,过滤器部分代码
if(session.getAttribute("user")!=null){
  chain.doFilter(request, response);
}
else{
  out.println("<script language='javascript'>alert('你还未登录');history.go(-1);</script>");
}
web.xml文件部分代码:
<filter-mapping>
  <filter-name>UserFilter</filter-name>
  <url-pattern>/ticket.jsp</url-pattern>
</filter-mapping>
在运行时,如果没登录,弹出的警告框的中文也是乱码。这时我登录后还是进不去ticket.jsp。重刷新页面后才可以进去,但是打开的ticket.jsp中文全是乱码(如果不用过滤器过滤该页面,打开后就是正常的)。
望大侠们不吝赐教,谢谢

------解决方案--------------------
你的页面编码是什么?
------解决方案--------------------
去把页面编码,和过滤器编码 一致

最好都用GBK的编码
------解决方案--------------------
1) 更改 D:\Tomcat\conf\server.xml,指定浏览器的编码格式为“简体中文”:

  方法是找到 server.xml 中的

<Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" URIEncoding='GBK' />


2)更改 Java 程序:

public class ThreeParams extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html; charset=GBK");
...
}
}

3)
keywords=new String(request.getParameter("keywords").getBytes("8859_1")); 

------解决方案--------------------
保证你的页面编码和你过滤器里写的一致
------解决方案--------------------
字符集要一致 用同一种编码
------解决方案--------------------
最好都用GBK的编码,保证你的页面编码和你过滤器里写的一致
------解决方案--------------------
out没设置编码格式的问题
------解决方案--------------------
过滤器传的时候编码变了