欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

nodejs+axios爬取html出現(xiàn)中文亂碼并解決示例

 更新時間:2022年06月28日 08:57:50   作者:天問  
這篇文章主要為大家介紹了nodejs+axios爬取html出現(xiàn)中文亂碼示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

一、亂碼原因

當(dāng)使用 nodejs + axios 來爬取某個 url 對應(yīng)的 html 時,出現(xiàn)中文亂碼。

在 HTML 頁面的 head 中沒有設(shè)置 <meta charset="UTF-8"> ,而 html 頁面默認(rèn)是 GBK 的編碼。

使用 axios 發(fā)送請求 responseEncoding 默認(rèn)是 utf8,造成編碼不一致,導(dǎo)致最后獲取到的 html 內(nèi)容出現(xiàn)中文亂碼。

二、解決辦法

以二進(jìn)制流的形式獲取 HTML 內(nèi)容,再對內(nèi)容進(jìn)行 GBK 編碼解析。具體步驟如下:

  • 設(shè)置 axios 請求時的 responseType 為 arraybuffer;
  • 使用 TextDecoder 對象提供的方法對二進(jìn)制流進(jìn)行編碼解析。

eg:

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

這樣就能完美解決中文亂碼的情況了。如果 HTML 設(shè)置的其他類型編碼,只需要在 new TextDecoder() 實(shí)例化參數(shù)傳入對應(yīng)的編碼即可。

API解讀:

 TextDecoder 接口表示一個文本解碼器,一個解碼器只支持一種特定文本編碼,例如: utf-8、iso-8859-2、koi8、cp1261,gbk 等等。解碼器將字節(jié)流作為輸入,并提供代碼點(diǎn)流作為輸出。

以上就是nodejs+axios解決html出現(xiàn)中文亂碼示例的詳細(xì)內(nèi)容,更多關(guān)于nodejs axios解決html中文亂碼的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 手把手教你如何使用nodejs編寫cli命令行

    手把手教你如何使用nodejs編寫cli命令行

    這篇文章主要介紹了手把手教你如何使用nodejs編寫cli命令行,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-11-11
  • Nodejs實(shí)現(xiàn)內(nèi)網(wǎng)穿透服務(wù)

    Nodejs實(shí)現(xiàn)內(nèi)網(wǎng)穿透服務(wù)

    很多人都不知道什么是內(nèi)網(wǎng)穿透,就是公網(wǎng)客戶端,可以訪問局域網(wǎng)內(nèi)的服務(wù),本文詳細(xì)的介紹了原理以及實(shí)現(xiàn),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • nodeJS進(jìn)程管理器pm2的使用

    nodeJS進(jìn)程管理器pm2的使用

    這篇文章主要介紹了nodeJS進(jìn)程管理器pm2的使用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • Node.js操作mysql數(shù)據(jù)庫增刪改查

    Node.js操作mysql數(shù)據(jù)庫增刪改查

    這篇文章主要介紹使用Node.js操作mysql數(shù)據(jù)庫增刪改查的相關(guān)資料,需要的朋友可以參考下
    2016-03-03
  • 安裝多版本node的完整步驟記錄

    安裝多版本node的完整步驟記錄

    在平時的使用中常會遇到這樣的場景,手上有多個前端項(xiàng)目,每個項(xiàng)目使用的Nodejs的版本都不太一致,下面這篇文章主要給大家介紹了關(guān)于安裝多版本node的完整步驟,需要的朋友可以參考下
    2024-01-01
  • node中modules.exports與exports導(dǎo)出的區(qū)別

    node中modules.exports與exports導(dǎo)出的區(qū)別

    這篇文章主要介紹了node中modules.exports與exports導(dǎo)出的區(qū)別,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • nodejs模塊nodemailer基本使用-郵件發(fā)送示例(支持附件)

    nodejs模塊nodemailer基本使用-郵件發(fā)送示例(支持附件)

    本篇文章主要介紹了nodejs模塊nodemailer基本使用-郵件發(fā)送示例(支持附件),具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-03-03
  • 在 Node.js 中使用原生 ES 模塊方法解析

    在 Node.js 中使用原生 ES 模塊方法解析

    這篇文章主要介紹了在 Node.js 中使用原生 ES 模塊方法解析,還有部分內(nèi)容的鏈接,下面我們就來一起看看吧,需要的朋友可以參考下。
    2017-09-09
  • Node server生成Swagger接口文檔步驟詳解

    Node server生成Swagger接口文檔步驟詳解

    本文介紹使用NodeJs搭建的后端server快速生成Swagger接口文檔的技巧,本文有詳細(xì)的步驟講解,通過代碼示例給大家介紹的非常詳細(xì),具有一定的參考價值,需要的朋友可以參考下
    2024-01-01
  • Node.js 文件夾目錄結(jié)構(gòu)創(chuàng)建實(shí)例代碼

    Node.js 文件夾目錄結(jié)構(gòu)創(chuàng)建實(shí)例代碼

    下面小編就為大家?guī)硪黄狽ode.js 文件夾目錄結(jié)構(gòu)創(chuàng)建實(shí)例代碼。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-07-07

最新評論