public class CharacterEncodingFilter implements Filter{
private FilterConfig filterConfig;
private String encoding = null;
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
}
/**
* 过滤器
*/
public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException,
ServletException {
try {
if (encoding == null) {
encoding = filterConfig.getInitParameter("encoding");
}
} catch (Exception iox) {
iox.printStackTrace();
}
request.setCharacterEncoding(encoding);
response.setCharacterEncoding(encoding);
HttpServletRequest req = (HttpServletRequest) request;
// get请求时,重新编码
if ("GET".equals(req.getMethod())) {
Enumeration names = request.getParameterNames();
while (names.hasMoreElements()) {
String name = (String) names.nextElement();
String[] values = request.getParameterValues(name);
for (int i = 0; i < values.length; i++) {
values[i] = new String(values[i].getBytes("ISO-8859-1"), encoding);
}
}
}
filterChain.doFilter(request, response);
}
public void destroy() {
filterConfig = null;
encoding = null;
}
}
试一试以上code。问题可以解决了。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。