我的编程空间,编程开发者的网络收藏夹
学习永远不晚

nodejs+axios爬取html出现中文乱码并解决示例

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

nodejs+axios爬取html出现中文乱码并解决示例

一、乱码原因

当使用 nodejs + axios 来爬取某个 url 对应的 html 时,出现中文乱码。

在 HTML 页面的 head 中没有设置 <meta charset="UTF-8"> ,而 html 页面默认是 GBK 的编码。

使用 axios 发送请求 responseEncoding 默认是 utf8,造成编码不一致,导致最后获取到的 html 内容出现中文乱码。

二、解决办法

以二进制流的形式获取 HTML 内容,再对内容进行 GBK 编码解析。具体步骤如下:

  • 设置 axios 请求时的 responseType 为 arraybuffer;
  • 使用 TextDecoder 对象提供的方法对二进制流进行编码解析。

eg:

async function getHtml() {
  let res = await axios({
    url: "http://www.xxx.com",
    headers: {
      // ...
    },
    responseType: "arraybuffer", // 关键步骤
    responseEncoding: "utf8",
  });
  let { data } = res
  let utf8decoder = new TextDecoder("GBK"); // 关键步骤
  let html = utf8decoder.decode(data);
  console.log(html)
}

这样就能完美解决中文乱码的情况了。如果 HTML 设置的其他类型编码,只需要在 new TextDecoder() 实例化参数传入对应的编码即可。

API解读:

 TextDecoder 接口表示一个文本解码器,一个解码器只支持一种特定文本编码,例如: utf-8、iso-8859-2、koi8、cp1261,gbk 等等。解码器将字节流作为输入,并提供代码点流作为输出。

以上就是nodejs+axios解决html出现中文乱码示例的详细内容,更多关于nodejs axios解决html中文乱码的资料请关注编程网其它相关文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

nodejs+axios爬取html出现中文乱码并解决示例

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

php中文截取出现乱码怎么解决

本篇内容介绍了“php中文截取出现乱码怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在PHP中可以通过mb_substr函数来截取中
2023-06-20

qt读取文件出现中文乱码怎么解决

在Qt中读取文件时出现中文乱码的问题,可能是因为编码格式的不匹配。可以尝试以下方法解决:使用QTextCodec设置正确的编码格式:QTextCodec *codec = QTextCodec::codecForName("UTF-8")
2023-10-23

Python读取文件内容出现中文乱码怎么解决

在Python中,如果你读取文件内容出现中文乱码,可以尝试以下方法解决:1. 指定文件编码:在使用`open()`函数读取文件时,可以指定文件编码。例如,如果文件编码为UTF-8,可以使用`open('file.txt', encoding
2023-10-12

如何解决php输出图片并显示中文乱码问题

php输出图片并显示中文乱码的解决办法:1、在PHP代码前加上ob_clean()清除缓冲区;2、设置UTF-8编码即可。
2017-10-11

编程热搜

目录