1)源文件全部用UTF-8编码,页面全部指定UTF-8编码
2)过滤器
<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>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
这个过滤器其实很简单,就是2句话:
request.setCharacterEncoding(this.encoding);
response.setCharacterEncoding(this.encoding);
3)server.xml中使用
<Connector port="8809" protocol="AJP/1.3" redirectPort="8443" URIEncoding=\'UTF-8\' useBodyEncodingForURI="true"/>
useBodyEncodingForURI 就会使用过滤器处理url中的%E 开头的unicode编码。他会覆盖掉URIEncoding的设置。
4)如果还有乱码情况,说明tomcat的默认的运行环境编码和UTF-8不一致,需要制定。(这里如果不是utf-8,则第三步其实是没有作用的)
###bin/catalina.sh中设置 tocmat 运行时编码 (用户中文乱码处理)
JAVA_OPTS="-Dfile.encoding=UTF-8 $JAVA_OPTS"
相关文章: