搞一个S2SH项目,在运行时整体上项目中文在IE浏览器中都存在乱码。
采用了网上很多方法治标不治本,都不能完整实现项目在处理中文时编码格式处理。和朋友讨论N多方式也无法,最后实在是没扯了…… 采用最原始的东西搞定—Servlert拦截器搞定问题。
1、首先在web.xml最前面加上如下代码(一定是要在最前面,不管web.xml后面怎么配置了字符编码格式,就把这个加载最前面[拦截器路径根据自己实际情况而定])。
<filter> <filter-name>encodeFilter</filter-name> <filter-class>com.born.sys.filter.SystemEncoding</filter-class> <init-param> <param-name>encoding</param-name> <param-value>utf-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodeFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
2、编写拦截器类,代码如下:
package com.born.sys.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
/**
* 系统中文乱码处理
* @author guo_mj
*
*/
public class SystemEncoding implements Filter {
private FilterConfig config = null;
private String encoding = null;
@Override
public void init(FilterConfig config) throws ServletException {
this.config = config;
}
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
if (encoding == null) {
encoding = config.getInitParameter("encoding");
}
request.setCharacterEncoding(encoding);
chain.doFilter(request, response);
}
@Override
public void destroy() {
config = null;
encoding = null;
}
}