Как читать специальные символы из .csv файлов в JavaScript - PullRequest
0 голосов
/ 08 февраля 2019

Я хочу прочитать .csv файлы, которые содержат специальные символы (польский язык).

Я использую ExcelJ для чтения .csv:

    var workbook = new Excel.Workbook();
    workbook.csv.readFile(uploadsPath + "/" + filename, {delimiter: ';'})
        .then(function (worksheet) {
            var worksheet = workbook.getWorksheet(1);

            console.log(worksheet.getRow(3).getCell(7).value);
        });
}

С этим кодом я получаю «Вроцлав» вместо «Вроцлав».

Я пытался использовать кодировку:

    var workbook = new Excel.Workbook();
    workbook.csv.readFile(uploadsPath + "/" + filename, {encoding: 'utf-16le'})
        .then(function (worksheet) {
            var worksheet = workbook.getWorksheet(1);

            console.log(worksheet.getRow(3).getCell(7).value);
        });
}

Но затем я получаю эту ошибку:

TypeError [ERR_INVALID_ARG_TYPE]: аргумент "buf" должен иметь типBuffer, TypedArray или DataView.Полученный тип объекта

Как с этим бороться?

Ответы [ 2 ]

0 голосов
/ 10 февраля 2019

Хорошо, я нашел простое решение.

Я создал функцию

function changeEncoding(path) {
    var buffer = fs.readFileSync(path);
    var output = iconv.encode(iconv.decode(buffer, "win1250"), "utf-8");
    fs.writeFileSync(path, output);
}

Я просто читаю файл и с помощью iconv-lite сначала декодирую из win1250, а затем сохраняюфайл с кодировкой utf-8.

0 голосов
/ 08 февраля 2019

Сначала я думаю, что ł - это utf-8.

Попробуйте распечатать его в браузере, возможно, это консоль, которая заставит его выглядеть так

...