2016-05-26 18 views
2

Hallo ich bin eine CSV-Datei basierend auf einigen gefilterten Daten in meiner eckigen Web-App zu generieren.Angular Download CSV-Datei internationalen Zeichen

Der Eingang, den ich zu meinem csvString sende, ist: Torup Bakkegård (Middelfartvej 105); Coop Brøndby; (Holkebjergvej 54);

Der Ausgang ist ruiniert immer, sobald ich die Excel-Datei öffnen: TorupBakkegà ¥ rd (Middelfartvej105) CoopBrøndby (Holkebjergvej54)

Allerdings, wenn ich es mit Notepad öffnen es in Ordnung ist, so ist es nur MS Excel ist (mit die neueste Version), die es zu ruinieren scheint. TorupBakkegård (Middelfartvej 105); Coop Brøndby (Holkebjergvej54);

habe ich versucht, mit mehreren Kodierungen, wie es scheint Excel einfach nicht Hier schert der Code 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(); 

Antwort

2

Nach einem wenig Forschung, die wir herausgefunden, dass wir die BOM nicht erwähnt.

Die Stückliste ist für die Codierung in der eigentlichen Datei verantwortlich. So nach dem Wechsel:

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

mit:

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

Alles funktioniert gut.

Credits geht an: Gergő Nagy, für die Beantwortung: Javascript to csv export encoding issue

Verwandte Themen