Angular下载csv文件的国际字符

时间:2016-05-26 12:53:41

标签: javascript angularjs excel csv url-encoding

您好我在我的角度网络应用中根据一些过滤后的数据生成了一个CSV文件。

我发送给我的csvString的输入是: TorupBakkegård(Middelfartvej 105); CoopBrøndby; (Holkebjergvej 54);

打开excel文件后,输出总是被破坏: TorupBakkeg¥rd(Middelfartvej105)CoopBrøndby(Holkebjergvej54)

然而,当我用记事本打开它时,它很好,所以它只是MS Excel(使用最新版本)似乎毁了它。 TorupBakkegård(Middelfartvej105);CoopBrøndby(Holkebjergvej54);

我尝试了几种编码,看来excel根本就不在意 这是代码javascript:

vm.downloadExcel = function (bookings) {
    var csvRows = [];
    var csvHeading = "Afhentningsadresse;Modtager";

    csvRows.push(csvHeading + "\n");
    for (var i = 0; i < bookings.length; i++) {
        var csvRow = "";
        csvRow += bookings[i].pickupAddress + ";";
        csvRow += bookings[i].customerAddress + ";";
        csvRows.push(csvRow + "\n");
    }
    var csvString = csvRows.join("%0A");
    var a = document.createElement('a');

    a.href = 'data:application/csv;charset=Windows-1252,' + csvString;
    a.target = '_blank';
    a.download = 'myFile.csv';

    console.log(a.href);
    document.body.appendChild(a);
    a.click();

1 个答案:

答案 0 :(得分:2)

经过一番研究后,我们发现我们没有提到BOM。

BOM负责实际文件中的编码。 所以改变之后:

a.href = 'data:application/csv;charset=Windows-1252,' + csvString;

使用:

    a.href = 'data:text/csv;charset=utf-8,%EF%BB%BF' + encodeURI(csvString);

一切正常。

致信:GergőNagy回答: Javascript to csv export encoding issue