Плохие символы, импортирующие CSV-файл с SheetJS - PullRequest
0 голосов
/ 03 октября 2019

У меня плохие символы при импорте CSV-файла с SheetJS. Идентификатор отлично работает для меня с файлами xlsx, но с csv у меня проблемы с такими символами, как 'é', которые он преобразует в 'Ã ©'. Я прочитал в документе, который совместим с форматом CSV, но я не могу найти ни одного рабочего примера. Вот мой код:

function handleFileSelect(ev) {
    var file = ev.target.files[0];
    showMainLoader();
    var reader = new FileReader();
    reader.onload = function(e){
        var data = e.target.result;
        var workbook = XLSX.read(data, {
            type: 'binary'
        });
        workbook.SheetNames.forEach(function(sheetName) {
            var XL_row_object = XLSX.utils.sheet_to_row_object_array(workbook.Sheets[sheetName]);
            var json_object = JSON.stringify(XL_row_object);
            console.log(json_object);
            jQuery("#csv-file").val('');
        });  
    };
    reader.readAsBinaryString(file);
}

jQuery(document).ready(function () {
    jQuery('#csv-file').on('change', function(e){
        handleFileSelect(e);
    });
});

Объявление первого просмотра:

<input type="file" id="csv-file" name="files"/>

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

Я делаю что-то плохое или вообще не совместимо?

ОБНОВЛЕНИЕ:

У меня плохое решение (скорее патч, чем решение), которое я считаюэто работает, но идея состоит в том, чтобы знать, как сделать то же самое с библиотекой. Идея состоит в том, чтобы декодировать результаты из utf8, когда файл не имеет расширения «.xlsx», но я думаю, что это может иметь проблемы с некоторыми символами или чем-то подобным.

Вот код, но явместо этого ищем хорошее решение:

if(file.name.split('.')[1] == 'xlsx') {
    console.log(json_object);
} else {
    console.log(decodeURIComponent(escape(json_object)));
}
...