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没设置编码格式的问题
------解决方案--------------------过滤器传的时候编码变了