@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".