Javascript-CSV导入UTF-8编码

时间:2018-09-24 10:47:57

标签: javascript excel csv encoding utf-8

我尝试通过javascript导入CSV文件。但是编码是错误的。 “ä,ö,ü等”可能是通过ANSI而不是UTF-8导入的。

CSV文件是我以前导出的,在那里我设法将编码设置为UTF-8。但是我无法正确导入。谁能告诉我该如何导入?

为说明当前问题:

导出格式:

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

导入格式:

Männlich; Sehr geehrter; Per Sie; Dr.;Jürgen;Böhler; 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);

0 个答案:

没有答案