На самом деле я не знаю, что делать. Пожалуйста, помогите решить эту проблему. У меня есть файл CSV, я передаю его в массив:

import csvToJson from 'convert-csv-to-json';
import fs from 'fs';

const URL_01 = `${__dirname}/URL/price.csv`;

//Unnecessary code removed for clarity...

app.get('/all', (req, res) => {
    let json = csvToJson.getJsonFromCsv(URL_01);
    res.send(json);
});

Я получил это: введите описание изображения здесь

Как получить правильные данные в UTF-8 ??

0
Balabukha 4 Мар 2018 в 11:25

3 ответа

Лучший ответ

Тактика должна быть:

var iconv = require('iconv-lite');
var csv = require('csv');

var converterStream = iconv.decodeStream('win1251');

fs.createReadStream('file-in-win1251.txt')
  .pipe(iconv.decodeStream('win1251'))
  .pipe(csv.parse())
  .pipe(csv.stringify())
  .pipe(process.stdout);
0
Balabukha 21 Апр 2018 в 07:30

Попробуйте обернуть вывод из csvToJson в JSON.parse (JSON.stringify ());

app.get('/all', (req, res) => {
     let json = csvToJson.getJsonFromCsv(URL_01);
     res.send(JSON.parse(JSON.stringify(json)));
});

JSON.Stringify() может анализировать данные, вызывающие ошибки. Но, конечно, вы захотите преобразовать его обратно в JSON из строки, используя JSON.parse(). Хотя сложно сказать, не зная проблемных персонажей.

0
TomPlum 4 Мар 2018 в 11:36

Попробуйте использовать библиотеку csvtojson вместо convert-csv-to-json.

Вы увидите примеры здесь: https://www.npmjs.com/package/csvtojson

0
Alexander Chef 4 Мар 2018 в 08:34