16

JavaScript を使用してクライアント側で CSV ファイルを生成しようとしています。このstackoverflow question の回答に従いました。コンテンツに Unicode 文字が含まれています (私の場合はヘブライ文字)。

ファイルの生成は成功しますが、Excel でファイルを開くと、すべての Unicode 文字が変な文字として表示されます。ASCII 文字 (英語と数字) が適切に表示されます。

奇妙なことに、メモ帳でファイルを開くと、Unicode 文字がうまく表示されます。これは、Excel とファイルの保存方法に関係があると思います。

何か案は?

4

3 に答える 3

38

Jack Cole のコメントとこの質問\uFEFFに続いて、私の問題を解決したのは、ファイルの先頭にBOM プレフィックス () を追加することでした。

これは作業コードです:

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();
于 2013-08-15T10:57:04.573 に答える
3

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)
})
于 2016-12-08T16:54:43.310 に答える