你的项目乱码了吗?

1 篇文章 0 订阅

项目中遇到乱码很正常,特别是和别的项目对接时更是寻常,这周在项目中解决的GET乱码问题,场景是一个tomcat下运行了新老2个项目,其中老项目编码是GBK的,而新接口项目是采用UTF-8编码,现在主要的问题是因为tomcat的server.xml中的端口配置了

URIEncoding="GBK",这就会导致所有访问这个tomcat下的GET请求url参数都会被GBK格式解码,即使请求头上有Content-Type为UTF-8格式或者有request.setCharacterEncoding("UTF-8");也不好使,如下是解决方案,另加遇到post乱码时 通常解决方案

1.本项目中解决方案:

     A:新加一个端口,这个端口配置URIEncoding="UTF-8",在新项目乱码的请求走这个端口

<Connector port="444" protocol="HTTP/1.1" SSLEnabled="true" URIEncoding="UTF-8"
    maxThreads="500" scheme="https" secure="true"
    clientAuth="false" truststoreType="JKS"/>

<Connector port="8444" protocol="HTTP/1.1" SSLEnabled="true" URIEncoding="UTF-8"
    maxThreads="500" scheme="https" secure="true"
    clientAuth="false"  truststoreType="JKS"/>

     B:请求参数用gbk格式编码

2.其它情况get请求乱码处理方案:

       A:tomcat中sevice.xml对应端口配置URIEncoding="UTF-8"

       B:仅限于ISO8859-1编码转GBK或者UTF-8对应方法转码new String(json.getBytes("ISO8859- 1"),"UTF-8");

new String(json.getBytes("gbk"),"UTF-8")这个方法是把gbk编码格式转为utf-8格式,但是有个问题是GBK转UTF-8时,奇数个中文会乱码,偶数个中文不会乱码。

3.post请求乱码处理方案:

1.使用过滤器过滤请求设置编码(传统ssm还有web.xml的项目)

<!--配置过滤器,使编码变为utf-8-->
<filter>
  <filter-name>endocding</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>
</filter>

2.方法中使用request.setCharacterEncoding("UTF-8");设置请求编码 response.setCharacterEncoding("UTF-8");设置响应编码

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值