Хочу перекодировать данные из MongoDB (utf-8) в файл csv (windows-1251)...
Нашел два примера с использованием
encoding и
iconv-lite.
Но какие бы комбинации на пробовал - файл получается с "кракозябрами".
Может подскажите как получить файл в нужной (win) кодировке?
const mongojs = require('mongojs')
const fs = require("fs");
const tunnel = require('tunnel-ssh');
const encoding = require('encoding')
const iconv = require("iconv-lite")
const cnf = JSON.parse(fs.readFileSync('./config.json'))
const config = {
host: cnf.host,
port: cnf.port,
username: cnf.username,
agent : process.env.SSH_AUTH_SOCK,
privateKey: fs.readFileSync(cnf.keyFile),
dstPort: cnf.dstPort
};
const server = tunnel(config, function (error, server) {
if (error) return console.log("SSH не подключился", error)
const db = mongojs('test')
const cl = db.collection('product')
//const file = fs.createWriteStream('product.csv', 'ascii')
const file = fs.createWriteStream('product.csv', 'utf-8')
file.on('error', err => {
console.log('Ошибка записи файла', err)
})
const q = {}
const fld = {
title: 1
}
const cur = cl.find(q, fld).sort({title: 1})
cur.on('data', (doc) => {
//const val = iconv.decode(doc.title, "win1251")
//const val = encoding.convert(doc.title, 'WINDOWS-1251', 'UTF-8')
//file.write(val + ';\n')
file.write(doc.title + ';\n')
})
cur.on('error', err => {
end()
console.log('Ошибка чтения данных', err)
})
cur.on('end', () => {
end()
console.log('Все')
})
const end = () => {
db.close()
file.end()
}
});