Просмотр полной версии : Проблемы с кодировкой на node.js
Добрый день.
Делаю парсер сайтов на node js и вот уже второй день не получается разобраться с кодировкой (страница имеет кодировку windows-1251), пробовал несколько модуле для изменения кодировки (iconv-lite/encoding) не помогает, на выходе получаю непонятные символы.
Может кто еще сталкивался с подобной проблемой ?
пробовал несколько модуле для изменения кодировки (iconv-lite/encoding) не помогает, на выходе получаю непонятные символы
А как пробуешь-то? iconv-lite нормально должен переводить.
body = iconv.encode(body, "win1251");
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);
})
});
Большое спасибо за помощь, все работает.
AlexAlesh
19.05.2020, 12:16
Добрый день! Попытался использовать пример выше, но не получилось для моей задачи. А задача в следующем - есть JSON файл внутри русские буквы в перемешку с английскими. Файл c кодировкой cp1251(windows-1251). Этот файл нужно перевести в UTF-8. Попробовал использовать "iconv-lite", но все приводило к крякозябрам такого вида "пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅп їЅ пїЅ-7-2" или просто "����"
Вот кусок JSON:
"TEST": {
"CODE": 1,
"NAME": "����",
},
Читаю файл через FS
vBulletin® v3.6.7, Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot