Показать сообщение отдельно
  #4 (permalink)  
Старый 03.08.2016, 16:24
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

encode переводится как закодировать. Эта функция берет javascript-строку и конвертирует ее в указаную кодировку, возвращая объект Buffer - массив фиксированого размера с набором байтов.

В твоем случае надо использовать decode, причем, на вход надо подавать не строку, а именно что буфер. На низком уровне это выглядит так:
// Код рабочий, можно запустить и проверить - должен вывести коректный русский текст
const iconv = require("iconv-lite");
const http = require("http");

http.get("http://forum.heroes35.net/", (res) => {
  let chunks = [];

  res.on("data", (chunk) => {
    chunks.push(chunk);
  });

  res.on("end", (chunk) => {
    let body = iconv.decode(Buffer.concat(chunks), "win1251");
    console.log(body);
  });
});


Но лучше, конечно, использовать потоковый интерфейс:
const iconv = require("iconv-lite");
const http = require("http");

http.get("http://forum.heroes35.net/", (res) => {
  res.pipe(iconv.decodeStream("win1251")).collect((err, body) => {
    if (err) throw err;
    console.log(body);
  })
});

Последний раз редактировалось Erolast, 03.08.2016 в 16:26.
Ответить с цитированием