node.js Shift_JISのサイトをfetchする





node.jsでShift_JISのサイトをfetchして文字化けに苦しんだことないですか?

その苦しみから解放する方法です。




環境


  • node.js 12.14.0



package.json


package.json
{
  "dependencies": {
    "iconv-lite": "^0.5.1",
    "node-fetch": "^2.6.0"
  }
}



ソース


index.js
const fetch = require('node-fetch');
const iconv = require('iconv-lite');

const url = 'http://ai.2ch.sc/test/read.cgi/meikyu/1577588004';

fetch(url, {
  method: 'get',
  headers: {
    'User-Agent':
      'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36'
  },
  referrer: ''
})
  .then(async res => {
    if (res.status !== 200) {
      return;
    }

    const body = iconv.decode(
      Buffer.from(await res.arrayBuffer()),
      'windows-31j'
    );

    console.log(body);
  })
  .catch(err => {
    console.log(err);
  });



コマンド


bash
$ npm i

$ node index



ホームへ