请求中文乱码_【1】执行Http请求访问网页
向导团队 - fourkings
【1】执行Http请求访问网页
1. 目标网址
我们的目标网址是当当网,url地址是 http://book.dangdang.com/
2. 获取HTML文档内容
目的是获取当当网的HTML文档内容,我们借助axios这个库发起HTTP的GET请求。
安装库: npm install axios
- 源代码
//axios是用于发起HTTP请求的库
const axios = require('axios');// 要访问的目标网址
const targetUrl = "http://book.dangdang.com/";axios.get(targetUrl).then(function (response) {//get请求的响应结果是一个object,我们所需的HTML文档内容是该对象的data属性console.log(response.data)}).catch(function (error) {console.log(error);});
- 运行结果
3. 原因分析与解决思路
3.1 原因分析
从运行结果可以看出,成功抓取了HTML文档的内容。但是存在中文乱码的情况,这种情况一般是编码不一致问题。axios编码默认是 utf8
,那么我们只需要确定当当网的编码即可。
使用Chrome浏览器打开当当网,在Network中任意选中一条请求资源,可以查看到响应的头信息。如下响应头信息中编码为 GBK
。中文乱码就确认了是编码不一致的原因。
3.2 解决思路
既然两者编码不一致,那么解决思路就是改变其中一方的编码。由于axios不支持 gbk
,所以我们让另一方改变,也就是网页响应结果的编码转成 utf8
。
- 设置请求的响应结果以流方式返回,需要设置
responseType
。 - 借助iconv-lite这个库进行编码转换。
安装库: npm install iconv-lite
- 源代码
// http://book.dangdang.com/
const axios = require('axios');
const iconv = require('iconv-lite');// 要访问的目标网址
const targetUrl = "http://book.dangdang.com/";//不断读取流数据并放入数组中,直到全部读取完就将数组中的数据转换为utf8编码的字符串
axios.get(targetUrl, { responseType: 'stream' }).then(function (response) {//此时的res.data 则为streamlet chunks = [];//'data'当有数据可读时触发。response.data.on('data', function (chunk) {chunks.push(chunk);});//'end'没有更多的数据可读时触发response.data.on('end', function () {let buffer = Buffer.concat(chunks);//使用iconv将'gbk'编码的buffer解码转换为'utf8'的字符串let str = iconv.decode(buffer, 'gbk');console.log(str)})}).catch(function (error) {console.log(error);});
- 运行结果
从上方运行结果可以看出,中文乱码的问题已经解决。
请求中文乱码_【1】执行Http请求访问网页相关推荐
- postmain请求中午乱码_完美解决Get和Post请求中文乱码的问题
对于Post请求,只需在Servlet或者jsp中写入如下代码就可以把解决从表单中传入的中文乱码问题 request.setCharacterEncoding("utf-8"); ...
- Spring-解决请求中文乱码问题
Spring-解决请求中文乱码问题 参考文章: (1)Spring-解决请求中文乱码问题 (2)https://www.cnblogs.com/andyfengzp/p/6197993.html (3 ...
- 【Servlet】HTTP请求中文乱码的问题
请求中文乱码 在进行请求参数传递时,经常会遇到请求数据为中文时的乱码问题,当Form表单的文本域中输入中文时会产生乱码问题,出现乱码的原因与客户端的请求编码方式(GET请求或POST请求)以及服务器的 ...
- Tomcat 中 GET方式 请求 中文乱码 出现的原因
网上很多关于GET方式请求中文乱码的解决方案,大体类似. 这里主要讲一下Tomcat在处理URL参数过程中, 究竟是为什么会导致了GET方式请求的中文乱码. 一句话概括就是: Tomcat默认将单字节 ...
- http请求中文乱码问题
最近在开发android项目过程中,使用okhttp3来发送请求,频繁遇到在post请求时,在服务器一端获取参数时遇到中文乱码,而且竟然get请求不会乱码,放到另一个工程项目下也不会乱码,这就令人很奇 ...
- 解决get请求中文乱码问题
在很多情况下get请求会发生中文乱码的情况,而换做post就不会,这其中的根本原因是get请求默认的是使用"iso-8859-1"编码,接下来介绍两种种解决get请求编码的方法 1 ...
- html请求socket乱码,Socket http请求中文乱码有关问题
Socket http请求中文乱码问题 各位高手,麻烦帮忙看看这个 http请求乱码问题,百思不得其解啊.... Socket http请求"http://www.gome.com.cn/e ...
- 处理中文乱码_浅入深出:一次提问引发的深思,从此再也不怕“乱码”问题
这是恋习Python之浅入深出系列第3篇原创首发文章 作者|丁彦军 来源|恋习Python(ID:sldata2017) 转载请联系授权(微信ID:2394608316) 近日,有位粉丝向我请教,在爬 ...
- ios请求头解决参数中文乱码_解决请求参数的中文乱码问题(get、post)
2018-11-28 在web请求与响应中,会遇到乱码问题,比如填写表单数据时,难免会输入中文,姓名.公司名称等.由于HTML设置了浏览器在传递请求参数时,采用的编码方式是UTF-8,但在解码时采用的 ...
最新文章
- “==”和equals方法的区别
- 禁用当前的账户win7_拯救你的win7系统,电脑优化到位,打游戏才会流畅
- 装饰器 闭包 生成器 迭代器
- [深度学习] Normalization 模型
- Codeforces Round #724 (Div. 2) F. Omkar and Akmar 组合数学 + 博弈
- android多接口请求参数,okhttp3 使用json参数post方式请求接口数据(android)
- 同步异步 阻塞 非阻塞 异步调用 线程队列 协程
- Solr如何管理索引库
- java Socket实现简单在线聊天(二)
- python编程(ply库)
- WPF中同一窗口下的界面切换
- phpexcel读取输出操作
- console_init初始化的研究
- 轻薄 linux 笔记本,华为MateBook13Linux版全面屏轻薄性能笔记本一键重装win10图文
- Unity粒子特效系列-毒液喷射预制体做好了,unitypackage包直接用 -下
- 即席查询—Presto
- Linux、UNIX设置开机自动运行命令、脚本配置
- 苹果手机Java在那_iPhone8描述文件在哪?iPhone描述文件不见了如何解决?
- 基于中台的公共图书馆数据服务研究
- 计算机软技能,在个人简历中有哪些软技能可以写?
热门文章
- php 抽象类 继承,PHP 抽象类继承抽象类时的注意点
- 怎么把虚拟机清空内存_深入理解java虚拟机1——内存管理机制与回收机制
- freemarker 学习笔记
- language mysql_MySql 语言的分类;
- 我是如何做到的:不切换 Git 分支,同时在多个分支上工作的?
- 皮一皮:被看穿的既视感...
- Spring Boot 2.4版本前后的分组配置变化及对多环境配置结构的影响
- 面试:什么是序列化,怎么序列化,为什么序列化,反序列化会遇到什么问题,如何解决?...
- 京东的热点key探测系统发布,单机 QPS 提升至 37 万
- Map 集合的坑你踩过几个?