「正しい」.CSVファイルの作りかた

ってのをメモしておかないとイカンなあ、と随分前に思ったのですが、
今ふとぐぐってみると、ちゃんとrfcの日本語訳が公開されてました。

CSVファイルの一般的書式 (RFC4180 日本語訳) – アルプス登山の玄関口・笠井家 – http://www.kasai.fm/wiki/rfc4180jp

# しかし……2005年まで「とりあえず」の仕様もなかったのか。
# これは気がついた人の勝利だな。。

ざっくりまとめると、

  1. 改行はCR+LF
  2. ヘッダ行が存在(してもよい)
  3. 各行のフィールド数は同一
  4. “”による括りはあってもなくても良い
  5. デリミタとエンクロージャ、すなわち改行・ダブルクォーテーション・カンマが含まれていたら、””による括り必須
  6. ダブルクォーテーション自体は”をさらに追加することによってエスケープ

こんなところでしょうか。最後2つは特に注意ですね。

あとはMIMEでヘッダ行の明示ができる、とかが若干気になりますが、ここら辺まで抑えておけばだいたいのデータ交換では困らないかと。

ちなみに、「エクセルに準拠したデータの吐き出し」、という問題については、ダブルクリックした時の挙動がステキすぎる上に、OOoとかが文字コードの扱いを丁寧にやりだしたおかげでさらに混迷の度合いが高まっており、かなり諦めモードです。(「データ」から「外部データの取り込み」みたいにやってくれれば、大体大丈夫なんだけど……。)

PHP使いとしては、PEAR::Spreadsheet_Excel_Writer になんとかしてもらう、という方向でしょうかね。今のところ文字化け問題も特になく、快調です。

関連してそうなエントリ

日高崇