Node.js Excel中的csv文件中未正确显示重音字符串

Node.js Excel中的csv文件中未正确显示重音字符串,node.js,csv,Node.js,Csv,我从mysql数据库中读取数据,然后将其保存到csv文件中。我在服务器端进行了检查,文件正确保存为utf8格式。 然后提示用户下载该文件。当我在我的计算机(MacOSX)上下载该文件时,该文件使用utf8是正确的。(使用Termninal中的file命令) 当我在Excel中打开csv文件时,重音字符是错误的。 在Excel中,我有AZERTY√©a而不是AZERTYéa,如果我使用文本编辑器打开文件 以下是我的代码: // File creation var reportFil

我从mysql数据库中读取数据,然后将其保存到csv文件中。我在服务器端进行了检查,文件正确保存为utf8格式。 然后提示用户下载该文件。当我在我的计算机(MacOSX)上下载该文件时,该文件使用utf8是正确的。(使用Termninal中的file命令)

当我在Excel中打开csv文件时,重音字符是错误的。 在Excel中,我有AZERTY√©a而不是AZERTYéa,如果我使用文本编辑器打开文件

以下是我的代码:

    // File creation
    var reportFile = Date.now();
    fs.closeSync(fs.openSync(__dirname + '/reports/' + reportFile + '.csv', 'w'));
    var attributes = [];
    var row = [];
    fs.appendFileSync(__dirname + '/reports/' + reportFile + '.csv', "\ufeff");

    for(var x = 0; x<fields.length; x++) attributes.push(fields[x].name);
    fs.appendFile(__dirname + '/reports/' + reportFile + '.csv', attributes.join('|'), function (err) {
        if(err) console.log('Error appending fields', err);
        fs.appendFileSync(__dirname + '/reports/' + reportFile + '.csv', '\n');
        for(var x = 0; x<results.length; x++) {
            row = [];
            for(var y = 0; y<attributes.length; y++){
                   row.push(results[x][attributes[y]]);
            }
            fs.appendFileSync(__dirname + '/reports/' + reportFile + '.csv', row.join('|'));
            fs.appendFileSync(__dirname + '/reports/' + reportFile + '.csv', '\n');
        }
        // file download
        req.reportFile = reportFile;
        res.setHeader('Content-disposition', 'attachment; filename='+__dirname + '/reports/' + reportFile + '.csv');
      res.set('Content-Type', 'text/csv; charset=utf-8');   

        fs.readFile(__dirname + '/reports/' + reportFile + '.csv', 'utf8', function (err,data) {
            if (err) {
                return console.log(err);
            }
            console.log(data);
            res.header("Access-Control-Allow-Origin", "*");
            res.status(200).send(data);         
        });
        });
//文件创建
var reportFile=Date.now();
fs.closeSync(fs.openSync(u dirname+'/reports/'+reportFile+'.csv',w');
var属性=[];
var行=[];
fs.appendFileSync(uu dirname+'/reports/'+reportFile+'.csv',“\ufeff”);

对于(var x=0;x我最终找到了解决方案。发送文件时是BOM问题。我认为它已经设置好了,因为我在编写文件时设置了它

我换了这行

    res.status(200).send(data);         

可能重复的
    res.status(200).send('\ufeff'+data);