更改Tomcat字符编码设置及解决post请求中文字符乱码

洼地云 tuoyidashi.png

当你在web.xml中配置了字符编码设置,可是请求url中的中文字符仍然乱码,很可能的原因就是Tomcat的字符编码配置问题,具体的解决办法如下。

默认编码

如果没有指定字符编码,Servlet规范规定使用”ISO-8859-1″作为默认的编码。

Get请求

如果是get请求,我们可以通过更改Tomcat目录下,conf/server.xml中的Connector中指定 URIEncoding=”UTF-8″ 参数,具体修改内容如下:

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" URIEncoding="UTF-8" />

Post请求

Post请求需要指定它发送的参数和值的编码。因为大多数客户端并没有设置一个明确的编码,默认采用的是ISO-8859-1。大多数情况下,这并不是我们想要的编码,我们可以使用过滤器来进行控制,Tomcat已经提供了完成这个功能的过滤器的例子或者内置了。请参看:

<!--4.x-->

webapps/examples/WEB-INF/classes/filters/SetCharacterEncodingFilter.java

<!--5.x-->

webapps/servlets-examples/WEB-INF/classes/filters/SetCharacterEncodingFilter.java
webapps/jsp-examples/WEB-INF/classes/filters/SetCharacterEncodingFilter.java

<!--6.x-->

webapps/examples/WEB-INF/classes/filters/SetCharacterEncodingFilter.java

<!--7.x (已经将这个Filter加入Tomcat内置了,具体位置:tomcat目录下的conf/web.xml,直接复制一下代码到你的项目web.xml中)-->

<filter>
<filter-name>setCharacterEncodingFilter</filter-name>
<filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class>
<init-param>
   <param-name>encoding</param-name>
   <param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>setCharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

参考文章:
1. http://blog.sina.com.cn/s/blog_6dc1452201014dgb.html;
2. http://blog.csdn.net/loveaborn/article/details/44450873;

赞(0)
未经允许禁止转载:优米格 » 更改Tomcat字符编码设置及解决post请求中文字符乱码

评论 抢沙发

合作&反馈&投稿

商务合作、问题反馈、投稿,欢迎联系

广告合作侵权联系

登录

找回密码

注册