Node.js UTF-8 BOM付きのファイル作成(CSVファイルの文字化け抑止)
こんなプログラムでCSVファイルを作成。
- const fs = require('fs');
- const lines = [
- 'フィールド名1,フィールド名2,フィールド名3',
- '値1-1,値1-2,値1-3',
- '値2-1,値2-2,値2-3',
- '値3-1,値3-2,値3-3',
- ];
- const text = lines.join('\n');
- fs.writeFile('output.csv', text, (err) => {
- if (err) throw err;
- console.log('出力しました。');
- });
Excelで開くと文字化けします。

データの先頭にBOM「\ufeff」を付与してやると回避できます。
- const fs = require('fs');
- const lines = [
- 'フィールド名1,フィールド名2,フィールド名3',
- '値1-1,値1-2,値1-3',
- '値2-1,値2-2,値2-3',
- '値3-1,値3-2,値3-3',
- ];
- // ファイルの最初にBOMを付ける
- const text = '\ufeff' + lines.join('\n');
- fs.writeFile('output.csv', text, (err) => {
- if (err) throw err;
- console.log('出力しました。');
- });
