csvファイルをダブルクリックで正常に開く
基本的に、WindowsPCならよっぽどこのことがない限り表計算ソフトとしてエクセルをインストールしていることが多いのではないだろうか。
そして、表計算ソフト用として、ウェブからデータをダウンロードする際に多いファイル形式はcsvだろう。
プログラムで出力する際、csv形式でダウンロードさせることが多いが、エクセルとcsvの関係をよくわかっていないと、文字化けしたり、区切り文字が正常に認識されなかったりすることがあるので要注意だ。
まず一番問題ないのが「カンマ区切り、ダブルクォーテーションで値を囲む、文字コードシフトJIS」だ。ダブルクォーテーションで囲むのは各値にカンマが入ってしまうと変なところでセルが分割されるので、それを防ぐためだ。ちなみに各値にダブルクォーテーションが含まれる場合は事前にダブルクォーテーションでエスケープしておく必要がある。
しかし「シフトJIS」というのは日本語用の文字コードであって、例えば中国語などは表現できない。そこで文字コードとしてはUTFな環境をつかいたいわけなのだが、単にUTF-8にするだけではダメだ。
そもそもUTFにはいろいろあって、UTF-7、UTF-8、UTF-16BE、UTF-16LEがある。そしてUTF-7をのぞく3つの形式にはそれぞれBOM付とBOM無があるので、合計7つのUTFが存在するというわけだ。実はこのうち適切に設定するとファイルをダブルクリックすることでエクセルで正しく表示させることが出来る文字コードが存在する。その答えはこうだ。
「タブ区切り、UTF-16LE(BOM付)」
囲み文字のダブルクォーテーションはあってもなくてもよい。ちなみにエクセル2002でも大丈夫。そして「メモ帳」でも文字化けせずに開くことが出来る。知っていると便利だ。