###背景
UTF-8にて作成されたCSVファイルを、Microsoft Excel を使用して開くと、日本語が化けてしまっていることを経験されたことも多いかと思います。
私も、忘れた頃に、この問題に直面することがあるため、備忘録として、一度整理することにしました。
###なぜ化けるのか
- Microsoft Excelの仕様として、デフォルトでは、入力ファイルをSJISと解釈して開くようです。(というような記事を多く見かけるため、このように理解しています)
- また、Microsoft Excelは、入力ファイルについて、UTF-8 も解釈できるようですが、厳密には、ファイルの先頭に、***BOM(byte order mark)***といった、3文字(0xEF 0xBB 0xBF)が付いているファイルのみ、解釈するようです。
- ちなみに、BOMが無いファイルは、UTF-8Nという名称で区別されることがあります。
- そして、ブラウザーからダウンロードしたCSVファイルには、UTF-8Nであることも多く、このため、Excelで開くと、文字化けしてしまうことがあります。
- また、Pythonにて、UTF-8で書き出しているにも関わらず、BOMを付けてないことで、Excelで開くと、文字化けしてしまうことがあります。(これは、よくあるケースかと思います)
###ではどうするのか
1)何かしらのプログラミング言語で出力している場合には、CSVファイルを出力する際に、BOMをつけてしまうことです。
たとえば、Pythonなら、以下のように、encoding="utf_8_sig" を付けることで対応できます。
詳細は、関連記事の2.を参考にしてみてください。
2)エディタを使う場合
サクラエディタには、BOMの有無を指定できるので、一度、ファイルを開き、BOMを指定して保存することで、BOMを付与できます。
##関連記事