在Java Web系统中出现中文乱码往往是因为编码不一致,需要统一数据库端与系统的的编码。
例如统一为UTF-8编码:
1)数据库的字符集编码设为UTF-8
2)在所有JSP页面中:
页面顶部添加:<%@ page contentType="text/html;charset=UTF-8" %>,
在页面的meta中加入:
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
3)在系统中:
(1) 在Servlet层处理每个请求前设置:request.setCharacterEncoding("UTF-8");
(2) 或者在web.xml中配置自定义filter来设置request.setCharacterEncoding("UTF-8");
filter示例:
(3) 或者在web.xml中配置spring的CharacterEncodingFilter
<filter>
<filter-name>characterEncodingFilter</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>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
如果使用Tomcat作为web server, 以上的设置只能对POST请求起作用,对于GET请求(如通过超链接访问)需要在
TOMCAT_HOME_DIR\conf\server.xml中做以下修改(添加:URIEncoding="UTF-8"):
<Connector port="8080" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true"
URIEncoding="UTF-8"/>