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)聲明
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載。
THE END