Создание CSV для Excel с помощью JavaScript с символами Unicode
Я пытаюсь создать CSV файл на стороне клиента, используя javascript. Я последовал за qaru.site/info/24377/.... У меня есть символы юникода в содержании (символы на иврите в моем случае).
Успешное создание файла, однако, когда я открываю файл в Excel, все символы юникода отображаются как забавные символы. Символы ASCII (английский и цифры) представлены хорошо.
Странно то, что если я открою файл в блокноте, символы Юникода будут хорошо отображаться. Поэтому я предполагаю, что это имеет какое-то отношение к Excel и тому, как я сохраняю файл.
Любые идеи?
Ответы
Ответ 1
После комментария Jack Cole и этот вопрос, то, что исправила мою проблему, заключалось в добавлении префикса спецификации (\ uFEFF) к началу файла.
Это рабочий код:
var csvContent = "...csv content...";
var encodedUri = encodeURI(csvContent);
var link = document.createElement("a");
link.setAttribute("href", "data:text/csv;charset=utf-8,\uFEFF" + encodedUri);
link.setAttribute("download","report.csv");
link.click();
Ответ 2
На сервере Node/Express я попробовал ответ Shay, но я получил ошибку для недопустимых символов в моем заголовке. Вместо этого я добавил \uFEFF
в начало тела ответа, и он сработал.
app.get('/', function (req, res) {
var csv = Papa.unparse(...);
res.set({
'Content-Type': 'text/csv; charset=UTF-8',
'Content-Disposition': 'attachment; filename="file.csv"',
});
res.send('\uFEFF' + csv)
})