結論
UTF-8 with BOM (Byte Order Mark)でエンコードするといいっぽい。
結論だけでは短すぎるので、背景
CUIでの処理が多いとはいえ、ちょっとした分析をしたり、非IT領域の方にデータを提供したりするときなど、ExcelでCSVファイルを読み出したいことは意外にある。
ところが、大体プログラムでUTF-8やらShift_JISやらでCSVに吐き出してそのままExcelで開くと文字化けする。
「データ」リボンの「テキスト/CSVから」で読み込めば読み込みの際の文字コードを指定できるじゃないかというツッコミはあるかもしれないが、面倒くさい。
最初からExcelが開けるエンコードがあるはず、と思い検索を掛けても意外に引っかからない。ということで思い当たるエンコードを調べた結果、上の結論に至った。
エンコードを変えられるソフト
プログラミング用のエディタならだいたい対応しているが、たかがCSVの文字コード変換なので軽いものがよさそう。
WindowsではNotepad++, MacではSublime Textなどだろうか(完全にここは好みが反映されている)。
BOMとはなんだろうか
Wikipediaの記事参照。
このファイルがUnicodeで、何でエンコードされているかを示すファイル頭の数バイトのデータ。ちょっと前までWindowsのNotepadで勝手に付いてしまい他OSとのテキストファイルのやり取りに一癖を加えていたやつだった。Excelではまだ勝手に付いてしまうし、付いていないと読み出しに失敗するようだ。