HttpGet 请求爬去网页内容,返回乱码问题

本文探讨了使用HttpGet请求获取网页内容时遇到的乱码问题,详细分析了header设置对响应解析的影响,特别是accept-encoding导致的压缩乱码,并提供了解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题:

HttpGet请求爬去网页内容,因为是模拟浏览器操作,所以将浏览器的header也都设置到了代码里;结果返回的内容乱码。

g1 = new HttpGet("https://mp.yidianzixun.com/");
//此行设置影响response解析的内容是乱码
//g1.setHeader("accept-encoding","gzip, deflate, br");
g1.setHeader("accept-language", "zh-CN");
.
.
.

HttpResponse response = httpClient.execute(g1);
String result = EntityUtils.toString(response.getEntity(),"utf-8");

查找资料:

GZIP最早由Jean-loup Gailly和Mark Adler创建,用于UNIX系统的文件压缩。我们在Linux中经常会用到后缀为.gz的文件,它们就是GZIP格式的。

现今已经成为Internet 上使用非常普遍的一种数据压缩格式,或者说一种文件格式。 HTTP协议上的GZIP编码是一种用来改进WEB应用程序性能的技术。大流量的WEB站点常常使用GZIP压缩技术来让用户感受更快的速度。

当有人来访问这个服务器中的网站时,服务器中的这个功能就将网页内容压缩后传输到来访的电脑浏览器中显示出来.一般对纯文本内容可压缩到原大小的40%.这样传输就快了。

总结:

因此我们在代码中设置了压缩,则接受到的是压缩之后的数据,因此就呈现出乱码;在header中取消压缩的设置,将不会压缩,已原文本的形式展现,就不再出现乱码的情况。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值