最近在使用爬取一個比較老的網站時發現,目標網站由於編碼方式是比較古早的編碼 - big5 ,因此在回傳的結果只要是中文的部分都變成了亂碼。
# 解決方案
npm 上有一個編碼轉換工具 iconv
可以很好地將不同格式的編碼進行轉碼。因此我們可以在 axios request api 的時候,將 responseType 設定為 arraybuffer
並且在 transformResponse
時讓 iconv 幫我們將 big5 轉換成現在主流的 utf-8。
詳細的 code 可以見以下。
import iconv from 'iconv-lite'; | |
const url = 'https://www.ooo.xxx?q='; | |
const { data } = await axios.get(url, { | |
responseType: 'arraybuffer', | |
transformResponse: [function (data) { | |
return iconv.decode(Buffer.from(data), 'big5') }] | |
} | |
); | |
console.log('data:', data) // 中文 |