Javascript - CSV импорт кодировки UTF-8 - PullRequest
0 голосов
/ 24 сентября 2018

Я пытаюсь импортировать файл CSV через JavaScript.Но кодировка неверна."ä, ö, ü и т. д."вероятно импортируются с ANSI вместо UTF-8.

Файл CSV экспортируется ранее мной, там мне удалось установить кодировку UTF-8.Но я не могу импортировать его правильно.Может кто-нибудь показать мне, как этот импорт должен быть сделан?

Чтобы проиллюстрировать текущую проблему:

Формат экспорта:

Männlich; Sehr geehrter; PerSie; Dr.; Jürgen; Böhler; juergen.boehler@example.com

Формат импорта:

• »¤ Münnlich; Sehr geehrter; Per Sie;Доктор; Юрген; Бюлер; juergen.boehler@example.com

Функция экспорта

function csv() {

        const rows = [[geschlecht[0].value, anrede[0].value, umgangsform[0].value, titel[0].value, vorname[0].value,nachname[0].value,email[0].value ]];
        var universalBOM = "\uFEFF";
        var csvContent = '';
        rows.forEach(function(rowArray){
            let row = rowArray.join(";");
            csvContent += row + "\r\n";
            for (i = 1; i < titel.length; i++) {

                csvContent +=  geschlecht[i].value + ';' + anrede[i].value + ';' + umgangsform[i].value + ';' + titel[i].value + ';' + vorname[i].value + ';' + nachname[i].value + ';' + email[i].value + "\r\n";
            }

        });
        var link = document.createElement("a");
        link.setAttribute("href", "data:text/csv;charset=utf-8," + encodeURIComponent(universalBOM+csvContent));
        link.setAttribute("download", "export.csv");
        document.body.appendChild(link); // Required for FF

        link.click(); // This will download the data file named "export.csv".

    }

Функция импорта

function readBlob(opt_startByte, opt_stopByte) {

    var files = document.getElementById('files').files;
    if (!files.length || !((files[0].name).endsWith(".csv"))) {
      alert('Bitte eine .csv-Datei auswählen!');
      return;
    }

    var file = files[0];
    var start = parseInt(opt_startByte) || 0;
    var stop = parseInt(opt_stopByte) || file.size - 1;

    var reader = new FileReader();

    // If we use onloadend, we need to check the readyState.
    reader.onloadend = function(evt) {
    if (evt.target.readyState == FileReader.DONE) { // DONE == 2
       document.getElementById('textareaMails').value += evt.target.result;
      }
    };

    var blob = file.slice(start, stop + 1);
    reader.readAsBinaryString(blob);


  }

  document.querySelector('.readBytesButtons').addEventListener('click', function(evt) {

    if (evt.target.tagName.toLowerCase() == 'button') {
      var startByte = evt.target.getAttribute('data-startbyte');
      var endByte = evt.target.getAttribute('data-endbyte');
      readBlob(startByte, endByte);

    }
  }, false);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...