У меня плохие символы при импорте 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)));
}