Проблемы с кодировкой при парсинге CSV при помощи JS
Создал в excel табличку, сохранил в формате csv(разделители - запятые). Содержимое на кириллице. Пытаюсь прочесть ее JS-ом при помощи кода:
var new;
$.ajax({
url: "xls/south_cpo_map1.csv",
method: 'GET',
async:false,
success: function (data) {
new = data.split('^^^');
console.log(new);
},
error: function (error) {
console.log(error);
}
});
Получаю на выходе вот такую белиберду:

Кодировка страницы utf-8, пробовал менять - результата никакого. Единственное, что помогает - открыть файл в блокноте и пересохранить со сменой кодировки на utf-8.
Можно как-то грамотно преобразовать результат чтения csv без танцев с бубном (блокнотом)?
Ответы (1 шт):
Автор решения: Денис Степанов
→ Ссылка
Скорее всего кодиравка файла cp1251.
Можно использовать TextDecoder, для перевода в utf-8, вот таким образом.
function decode(responseArrayBuffer) {
const
dataView = new DataView(responseArrayBuffer),
decoder = new TextDecoder('windows-1251');
return decoder.decode(dataView);
}
fetch('xls/south_cpo_map1.csv')
.then(response => response.arrayBuffer())
.then(decode)
.then(console.log)
.catch(err => console.log(err.message));
JQuery через $.ajax().
function decode(responseArrayBuffer) {
const
dataView = new DataView(responseArrayBuffer),
decoder = new TextDecoder('windows-1251');
return decoder.decode(dataView);
}
const xhrArrayBuffer = new XMLHttpRequest();
xhrArrayBuffer.responseType = 'arraybuffer';
$.ajax({
url: 'xls/south_cpo_map1.csv',
method: 'GET',
xhr: function() {
return xhrArrayBuffer;
},
success: function (data) {
console.log(decode(data));
}
});