1.
//第一种方式,这种方式在每个需要传参的地方都要写,会累死的
username = new String(username.getBytes("ISO-8859-1"),"GBK");
2.在每个Servlet中加入:这种方式基本上每个页面都要写,并且仅对POST方法有效,因为GET方法在客户端就已经完成编码工作了,写进去也无效
request.setCharacterEncoding("GBK");
response.setCharacterEncoding("GBK");
3.用过滤器,严重推荐
package com.umt.base;
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;
public class SetEncoding implements Filter {
private String encoding = "ISO-8859-1";
public void destroy() {
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
request.setCharacterEncoding(this.encoding);
response.setCharacterEncoding(this.encoding);
chain.doFilter(request, response);
}
public void init(FilterConfig config) throws ServletException {
String encod = config.getInitParameter("encoding");
if(encod != null && encod.length() > 0){
this.encoding = encod;
}
}
}
//在web.xml中配置如下信息:
<filter> <filter-name>setEncoding</filter-name> <filter-class>com.umt.base.SetEncoding</filter-class> <init-param> <param-name>encoding</param-name> <param-value>GBK</param-value> </init-param> </filter> <filter-mapping> <filter-name>setEncoding</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
- <!-- 利用spring解决乱码 -->
- <filter>
- <filter-name>encoding</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>encoding</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>