Javascript to csv export encoding issue
You should add the UTF-8 BOM at the start of the text, like:
var csvContent = "data:text/csv;charset=utf-8,%EF%BB%BF" + encodeURI(csvContent);
It worked for me with Excel 2013.
Demo Fiddle
You can add the BOM at first, use this code and try
var BOM = "\uFEFF";
var csvContent = BOM + csvContent;
and then crate the file headers with the data: "text/csv;charset=utf-8"
Excel is really bad at detecting encoding, especially Excel on OSX.
The best solution would be to encode your CSV in the default Excel encoding: windows-1252 (also called ANSI, which is basically a subset of ISO-8859-1).
I put a complete example of how to do that at: https://github.com/b4stien/js-csv-encoding.
The 2 main parts are stringencoding (to encode the content of your CSV in windows-1252) and FileSaver.js (to download the generated Blob).
It looks like:
var csvContent = 'éà; ça; 12\nà@€; çï; 13',
textEncoder = new TextEncoder('windows-1252');
var csvContentEncoded = textEncoder.encode([csvContent]);
var blob = new Blob([csvContentEncoded], {type: 'text/csv;charset=windows-1252;'});
saveAs(blob, 'some-data.csv');