各位好,我试着用Filter来做统一编码,doFilter方法如下:
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException,ServletException {
System.out.println("---------------------------doFilter");
req.setCharacterEncoding("UTF-8");
/*
if (ignore || req.getCharacterEncoding()==null) {
String encoding = selectEncoding(req);
if (encoding != null) req.setCharacterEncoding(encoding);
else req.setCharacterEncoding(this.encoding);
}
*/
chain.doFilter(req,res);
}
在web.xml里面的配置如下:
encoding
org.simon.filter.SetCharacterEncodingFilter
encoding
utf-8
encoding
/*
JSP页面上的主要代码如下:
<%@ page language="java" import="java.util.*" pageEncoding="GB2312"%>
密码:
但是提交后,在Struts 2的Action类中接收到的中文还是乱码,但是把JSP中第一行中的pageEncoding="GB2312" 改成 pageEncoding="UTF-8",就没问题了。
我就是觉得很奇怪,过滤器不是在访问这个页面的时候就已经把编码设置成了UTF-8了吗?为什么还是会出现这种问题,中间做了什么呢?麻烦大家帮忙解决一下,谢谢了~~