使用 fs.writeFileSync 生成的 csv 文件是 UTF-8 不带 BOM 格式的,导致用 excel 打开时候不识别为 UTF-8 格式,所以乱码。

file.js

const { appendFileSync } = require('fs');

appendFileSync('test.csv', '追加的数据', {
  encoding: 'utf8',
  mode: 0o666,
  flag: 'a',
}, (err) => {
  if (err) throw err;
});

运行命令:node file.js

Node fs.writeFileSync 操作中 UTF-8 格式 BOM 缺失_nodejs

解决办法:在文件开关加上 \uFEFF 即可

file.js

const { appendFileSync } = require('fs');

appendFileSync('test.csv', '\uFEFF追加的数据', {
  encoding: 'utf8',
  mode: 0o666,
  flag: 'a',
}, (err) => {
  if (err) throw err;
});

删除 test.csv 文件,运行命令:node file.js

Node fs.writeFileSync 操作中 UTF-8 格式 BOM 缺失_乱码_02