@buster
Для чтения .csv файла в node.js в русской кодировке "windows-1251" можно использовать модуль iconv-lite.
Пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
const fs = require('fs'); const iconv = require('iconv-lite'); // Читаем файл в буфер const buffer = fs.readFileSync('file.csv'); // Декодируем с помощью iconv-lite const data = iconv.decode(buffer, 'win1251'); // Преобразуем в массив строк, разделенных символом переноса строки const lines = data.split(' '); // Преобразуем каждую строку в массив значений, разделенных запятой const result = lines.map(line => line.split(',')); console.log(result); |
В результате будет получен двумерный массив с данными из csv-файла, прочитанными в кодировке "windows-1251".
@buster
Если вы хотите использовать библиотеку csv-parser, вы можете сначала декодировать содержимое .csv файла, а затем передать его в csv-parser.
Пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
const fs = require('fs');
const iconv = require('iconv-lite');
const csv = require('csv-parser');
const inputStream = fs.createReadStream('file.csv');
// Поддерживаемые кодировки можно посмотреть здесь: https://github.com/ashtuchkin/iconv-lite/wiki/Supported-Encodings
const decoderStream = iconv.decodeStream('win1251');
inputStream.pipe(decoderStream)
.pipe(csv())
.on('data', (row) => {
console.log(row);
})
.on('end', () => {
console.log('CSV file successfully processed');
});
|
В данном примере мы используем iconv.decodeStream('win1251') для декодирования содержимого файла перед передачей его в csv-parser. Когда данные будут прочитаны из .csv файла, они будут автоматически декодированы из кодировки "windows-1251".