记一次接口开发中遇到的非中文乱码

场景:node服务调用javaee服务的http接口

遇到的问题:在开发环境中,node服务能正常获取到接口返回的json字符串;但是在测试环境中,发现node服务获取到的json字符串是乱码

分析:

   1.首先考虑到是测试环境机器编码不一致。但是排查之后,node服务的机器和java服务器编码均一致。

 2.由于返回的json串都是英文字符,且乱码长得比较奇怪:���FM��&y�yA�ǑK�n�3Wh"�^/��tc���M�FT���z����om-�����g���)��zҝn��4����¢�BGi

   3.接下来考虑开发测试环境的差异。由于测试环境的服务间通讯均通过内部域名访问,内部域名均配置在nginx集群中,因此,怀疑是nginx集群在转发请求的时候做了什么事情。

   4.接下来,通过增加日志,把返回的请求头和数据全打出来。发现测试环境和开发环境的请求头有差异,测试环境的请求头中多了"content-encoding":"gzip"。此设置,表示会将请求返回的数据压缩,以减小传输的数据大小。

  5.最后查看nginx的配置,发现配置了gzip。确定是nginx加上的这个请求头


解决方案:node服务在判断有gzip属性时,先解压缩数据,再解析

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值