LoginSignup
6
2

More than 3 years have passed since last update.

json2csvで出力したCSVファイルがExcelで文字化けしてしまう

Posted at

はじめに

以前まとめた、【Node.js】JSON文字列をCSVファイルとして吐き出すという記事で、json2csvというモジュールを使用し、CSVファイルを正常に出力できたと思っていたのですが、ExcelでCSVファイルを開くと文字化けしてしまっていたので、修正を行いました。

結論

withBOMオプションをtrueにする

解説

json2csvのドキュメントにwithBOMオプションの説明が記載されていました。

Unicode Support
Excel can display Unicode correctly (just setting the withBOM option to true). However, Excel can't save unicode so, if you perform any changes to the CSV and save it from Excel, the Unicode characters will not be displayed correctly.

json2csv

withBOMオプションをtrueにするだけで、ExcelではUnicodeを正しく表示できる、的なことが書かれていますね。
なので、インスタンス化時にwithBOMオプションを付与してあげます。

json2csvのインスタンス化
const json2csvParser = new Parser({fields, transforms, withBOM: true});

これで、Excelでも文字化けすることなく、正常にCSVファイルが表示できるかと思います。

BOMって何だ?

「Byte Order Mark」の正式名称で、BOMが付与されたファイルはUnicodeで書かれていることを証明しています。
しかし、Unicodeで書かれたファイル全てにBOMが付与されている訳ではありません。BOMがあってもなくてもどちらでもいいそうです。BOMが存在する理由は、絶対にこのファイルがUnicodeで書かれていることを示す必要がある場合があるからで、今回のExcelでCSVファイルを開く時などが該当します。
ExcelではBOMが付与されたCSVファイルでないと、文字コードが認識されずに文字化けを引き起こしてしまうのです。

参考

バイトオーダマーク(英:Byte Order Mark)とは
簡単に文字化け回避!UNICODE (UTF-8) の CSV データを表示する方法

6
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
2