在Node.js中使用request庫獲取HTML文本時(shí)出現(xiàn)編碼異常的原因是什么?如何解決?

在Node.js中使用request庫獲取HTML文本時(shí)出現(xiàn)編碼異常的原因是什么?如何解決?

Node.JS使用request庫獲取html文本時(shí)編碼異常的解決方法

在Node.js中,使用request庫抓取網(wǎng)頁內(nèi)容時(shí),經(jīng)常會遇到編碼問題導(dǎo)致輸出亂碼。本文分析此問題的原因并提供解決方案。

問題描述:

使用request庫獲取網(wǎng)頁HTML,瀏覽器顯示正常,但Node.js環(huán)境下打印結(jié)果為亂碼。例如:

const request = require('request');  function getGoods() {   request('https://www.58moto.com/used-car/1470264', (err, res, body) => {     console.log(body);    }); }  getGoods();

問題分析:

立即學(xué)習(xí)前端免費(fèi)學(xué)習(xí)筆記(深入)”;

request庫默認(rèn)不自動處理響應(yīng)內(nèi)容編碼。當(dāng)服務(wù)器響應(yīng)頭Content-Type未明確指定字符集時(shí),request庫可能以二進(jìn)制形式返回?cái)?shù)據(jù),導(dǎo)致亂碼。

解決方案:

推薦使用axios庫替代request。axios能自動識別并處理編碼,避免亂碼問題。

const axios = require('axios');  function getGoods() {   axios.get('https://www.58moto.com/used-car/1470264')     .then(response => {       console.log(response.data);     })     .catch(error => {       console.error(error);     }); }  getGoods();

axios的自動編碼處理功能能有效解決request庫在處理編碼時(shí)遇到的問題,確保獲取到正確的HTML文本內(nèi)容。 如果仍然遇到問題,可以檢查服務(wù)器返回的Content-Type頭信息,并手動設(shè)置request的編碼選項(xiàng),例如encoding: ‘utf8’,但這不如axios的自動處理方便可靠。

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊11 分享