

Expressで作成しているAPI経由でcsvをダウンロードさせ、Excelで利用するために、BOM付きUTF-8でファイルダウンロードをさせたい。

[code]

    res.contentType('text/csv');
    res.attachment('response.csv');
    res.write(
      Buffer.concat([Buffer.from([0xef, 0xbb, 0xbf]), Buffer.from('csv,string,here')])
    );
    res.end();
    
[/code]

結果として、BOMなしUTF-8のcsvファイルがダウンロードされる。  
`res.write` の中身を `fs.write`
でファイルに書き出したものがBOM付きUTF-8になっているのを確認しているので、HTTPレスポンス処理でBOMが外れているようです。  
何か対策をご存知でしたら教えていただきたいです。


CC BY-SA 4.0
2019-08-16T09:53:56.080
57404
2022-10-14T09:01:00.133
2019-08-17T16:55:21.927
728
25653
question
node.js
Nodejs ExpressでBOM付きBufferをResponseで送りたい


取得するクライアント側の問題かもしれません。

以下のコードでブラウザアクセスしましたが、  
OS XのChromeでも Winの IE11でもダウンロードされたファイルにBOMは残っていました。  
node : v10.6.0(OS X)  
express : 4.17.1

質問文の方を修正させてもらいましたが、Bufferの行末に不要なセミコロンがありました。もし実際のコードにも残っていたなら別の問題かもしれませんので一応ここでもお知らせしておきます。

[code]

    var express = require('express')
    var app = express()
    
    app.get('/', function(req, res){
        res.contentType('text/csv');
        res.attachment('response.csv');
        res.write(
            Buffer.concat([Buffer.from([0xef, 0xbb, 0xbf]), Buffer.from('csv,string,here')])
        );
        res.end();
    })
    app.listen(3000, ()=> console.log('3000'))
    
[/code]

画像はIEでダウンロードしたファイルをバイナリエディタで開いたものです。

[![画像の説明をここに入力](https://i.stack.imgur.com/USML7.png)](https://i.stack.imgur.com/USML7.png)


CC BY-SA 4.0
2019-08-17T16:53:45.977
57418
2019-08-17T16:53:45.977
728
57404
answer