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

我遇到这个问题的时候是在做一个第三方支付接口的时候,在回调函数中,解码URL的时候怎么解都不好使,解出来是乱码的问题,搞了半天没解决,百度找到了另一种方法。

这是第一种方法

new String(getURLDecoderString(json).getBytes("ISO-8859-1"),"utf-8")//json是你要解码的东西

第二种方法,后来的时候公司的以为大佬指点,出现这种情况的原因是因为tomcat默认编码的问题,一般情况下要设置tomcatget请求只需要在server.xml中加上如下配置。

<Connector URIEncoding="utf-8" connectionTimeout="20000" port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"  redirectPort="8443" useBodyEncodingForURI="true"/>

但是这种配置设置编码的方法只对get请求有效但是对于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>

 

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值