1. 原理介绍
request会根据不同服务器默认的编码并将内容过滤传给后台程序所有就会有不同的编码问题
2. 解决方案
方案一、
所以在web中如果有乱码我们可以才用
对每一个doGet(HttpServletRequest request,HttpServletResponse response)
或doPost、Service等
req.setCharacterEncoding("UTF-8");
方案二、
我们可以用全局的方法
package com.xxx.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 liuqing
* @version 1.0
* @see 中文编码
* 2009-10-27
*
*/
public class CharacterEncodingFilter implements Filter {
private String encoding;
@Override
public void destroy() {
}
@Override
public void doFilter(ServletRequest req, ServletResponse resp,
FilterChain filterChain) throws IOException, ServletException {
req.setCharacterEncoding(this.encoding);
filterChain.doFilter(req, resp);
}
@Override
public void init(FilterConfig config) throws ServletException {
this.encoding = config.getInitParameter("encoding");
}
}
在web.xml 中添加过虑器
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>com.xxx.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
方案三、
如果闲写麻烦就用Spring 写好的过虑器也可以
<filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>