在Node.js中使用request庫獲取網頁內容時出現編碼異常,該如何解決?

在Node.js中使用request庫獲取網頁內容時出現編碼異常,該如何解決?

Node.JS request庫網頁內容編碼異常的解決方法

使用Node.js的request庫抓取網頁時,經常會遇到響應體(body)編碼錯誤導致亂碼的問題。 以下代碼示例展示了這個問題:

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

瀏覽器顯示網頁源碼正常,但上述代碼運行結果卻是亂碼,例如:?zX????K?,??}?????????:_??????z檤???{??6?T=?s?5??~??[~?y?g?Z??~??????#??n?…

這種亂碼問題通常是因為request庫未能正確識別和處理網頁的編碼方式。

解決方法

一種常見且有效的解決方法是使用axios庫替代request。axios在處理編碼方面通常表現更好,能更可靠地解碼響應內容。

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

通過使用axios,可以有效避免request庫在編碼處理上的不足,從而獲取正確編碼的網頁內容。 如果仍然遇到問題,可以檢查目標網站的Content-Type響應頭,確定其編碼方式(例如utf-8、gbk等),并使用相應的解碼方法進行處理。 例如,對于gbk編碼,可以使用iconv-lite庫進行解碼。

需要注意的是,request庫已經不再維護,建議使用axios或其他現代化的HTTP客戶端庫。

? 版權聲明
THE END
喜歡就支持一下吧
點贊14 分享