当你在web.xml中配置了字符编码设置,可是请求url中的中文字符仍然乱码,很可能的原因就是Tomcat的字符编码配置问题,具体的解决办法如下。
默认编码
如果没有指定字符编码,Servlet规范规定使用”ISO-8859-1″作为默认的编码。
Get请求
如果是get请求,我们可以通过更改Tomcat目录下,conf/server.xml中的Connector中指定 URIEncoding=”UTF-8″ 参数,具体修改内容如下:
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8" />
Post请求
Post请求需要指定它发送的参数和值的编码。因为大多数客户端并没有设置一个明确的编码,默认采用的是ISO-8859-1。大多数情况下,这并不是我们想要的编码,我们可以使用过滤器来进行控制,Tomcat已经提供了完成这个功能的过滤器的例子或者内置了。请参看:
webapps/examples/WEB-INF/classes/filters/SetCharacterEncodingFilter.java
webapps/servlets-examples/WEB-INF/classes/filters/SetCharacterEncodingFilter.java
webapps/jsp-examples/WEB-INF/classes/filters/SetCharacterEncodingFilter.java
webapps/examples/WEB-INF/classes/filters/SetCharacterEncodingFilter.java
setCharacterEncodingFilter
org.apache.catalina.filters.SetCharacterEncodingFilter
encoding
UTF-8
setCharacterEncodingFilter
/*