httpResponse.getEntity()返回乱码的问题

虽然 HttpClient 已经过时了,不过Retrofit我还不熟,所以今天按照网上的教程实现模拟登陆功能的时候,因为他用的是HttpClient,我也照着用了。

不过过程中发现服务器返回的数据是乱码,网上的大部分人说法都是在请求头里添加编码参数

httpRequest.addHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");

或者在使用EntityUtils.toString( )时加上编码参数

EntityUtils.toString(httpResponse.getEntity(),"UTF-8");


然而我都照着做了,没有卵用,还是乱码。

期间看到有位博主说他把响应头都打印出来查看,于是我也照着做,看看能不能发现什么问题,看了好几遍,看到下面这行

Content-Encoding gzip

我怀疑是这里出了问题,事实证明确实是这里出了问题

我在请求头里加了下面这行

httpRequest.addHeader("Accept-Encoding","gzip, deflate");

而加了这句后,服务器返回的数据会进行gzip压缩,所以乱码,但是在浏览器上,浏览器会对接受的数据自动解压缩,所以浏览器不会出现乱码问题。

把那行请求头去掉就好,就不会出现乱码了。当然这只是临时解决问题,更好的办法是添加解压缩的方法。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容