1.前台页面
jsp,html页面头部设置字符编码为utf-8
<%@ page language="java"
import="java.util.*" pageEncoding="utf-8"%>
<META
http-equiv="Content-Type" content="text/html;
charset=utf-8">
2.控制器
(1)如果是servlet设置页面请求和回应的编码:
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
(2)如果是struts2
struts.xml前面加上这么一句:
<constant
name="struts.i18n.encoding" value="utf-8"
/>
(3)如果使用了spring框架
web.xml配置
<!-- 编码过滤器
-->
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.EncodingFilter</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>
创建过滤器 EncodingFilter
public class EncodeFilter implements Filter {
protected String encoding = null;
@Override
public void destroy()
{
}
@Override
public void doFilter(ServletRequest request, ServletResponse
response,
FilterChain chain) throws IOException, ServletException
{
request.setCharacterEncoding(encoding);
response.setCharacterEncoding(encoding);
chain.doFilter(request, response);
}
@Override
public void
init(FilterConfig config) throws ServletException
{
this.encoding =
config.getInitParameter("encoding");
}
}
3.数据库
第一保证数据库的db和table的编码格式是utf-8
第二jdbc:mysql://localhost:3306/android_stat?useUnicode=true&characterEncoding=utf-8
在连接数据库的时候加上
?useUnicode=true&characterEncoding=utf-8
4.字符流
String string = request.getParametes(‘name‘);
//把得到的值转为原始编码,再转为UTF-8
string=new
String(string.getBytes("iso8859-1"),"UTF-8");
5.tomcat原因
在server.xml加上
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>
原文:http://www.cnblogs.com/zyb2014/p/3645047.html