Angular 下载国际字符csv文件

Angular download csv file international characters

您好,我正在根据 angular 网络应用程序中的一些过滤数据生成 CSV 文件。

我发送到我的 csvString 的输入是: Torup Bakkegård(米德尔法特维伊 105); Coop 布伦比; (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();

经过一些研究,我们发现我们没有提到 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