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压缩,所以乱码,但是在浏览器上,浏览器会对接受的数据自动解压缩,所以浏览器不会出现乱码问题。

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

你可能感兴趣的:(httpResponse.getEntity()返回乱码的问题)