Проблема с кодировкой при парсинге сайта node js
При парсинге сайта вместо русских символов выдает вопросы.

Как я понял, на сайте кодировка windows-1251, а хотелось бы получить данные в виде UTF-8. При попытке конвертировать html код, вместо вопросов получаю буквы 'Э'.

как исправить данную проблему?
const axios = require('axios');
const cheerio = require('cheerio');
const utf8 = require('utf8');
let iconv = require('iconv-lite');
const url = 'https://4pda.ru/page/1/'
axios(url)
.then(response => {
const html = response.data
const ruHtml = iconv.encode(iconv.decode(html, "win1251","win1251")).toString();
console.log(ruHtml)
const $ = cheerio.load(ruHtml)
const pdaArticle = $('.QBMHLfg8HZf > article')
console.log(pdaArticle.length)
const pdaData = [];
pdaArticle.each(function() {
const title =$(this).find('.description > h2 > a').attr('title');
const desc = $(this).find('.description > div >p').text();
pdaData.push({
title: title,
desc: desc
})
})
console.log(pdaData)
})
.catch(console.error);
Ответы (1 шт):
Автор решения: vsemozhebuty
→ Ссылка
Если я правильно понимаю, вам нужны не данные в UTF-8 (эту кодировку вы должны были бы определять, если бы записывали куда-то строку), а просто строка, декодированная из буфера в кодировке win1251. То есть вам нужно получить с сервера буфер и декодировать его, задав кодировку.
Попробуйте так:
axios(url, { responseType: "arraybuffer" })
.then(response => {
const ruHtml = iconv.decode(response.data, "win1251");
// ...