Подтвердить что ты не робот

Создание CSV для Excel с помощью JavaScript с символами Unicode

Я пытаюсь создать CSV файл на стороне клиента, используя javascript. Я последовал за qaru.site/info/24377/.... У меня есть символы юникода в содержании (символы на иврите в моем случае).

Успешное создание файла, однако, когда я открываю файл в Excel, все символы юникода отображаются как забавные символы. Символы ASCII (английский и цифры) представлены хорошо.

Странно то, что если я открою файл в блокноте, символы Юникода будут хорошо отображаться. Поэтому я предполагаю, что это имеет какое-то отношение к Excel и тому, как я сохраняю файл.

Любые идеи?

4b9b3361

Ответ 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)
})