CSV

新しくCSVファイルを利用せざるを得ないときのチェックリスト

More than 1 year has passed since last update.

CSVは誰かがフォーマットを厳密に定義してるわけでないので、認識相違が多めです。
以下のような部分を考えましょう。

ポイント メモ
改行コード
  • CR+LF(Windows主流)
  • LF(Unix主流)
CRLFが無難。
文字コード
  • UTF-8
  • CP932
  • Shift_JIS
  • EUC-JP
WindowsでもUTF-8がおすすめ。
UTF-8が主流だからというのは当然として、特にVistaからJIS第三第四水準文字がUnicodeで入力できるので入力値に存在する可能性がある。

文字コード決めの考慮点

  • JIS第三第四水準文字を利用するか
  • Windowsの場合は拡張文字を利用するか
  • emojiはどうか
まず使わないがShift_JISやEUC-JPも2004版で第三第四水準相当になる。
区切り文字
  • カンマ
  • タブ
項目にカンマが含まれる可能性があるのでタブのほうがおすすめ。
またスプレッドシートではタブの方が扱いやすいのもポイント。
ヘッダー
  • あり
  • なし
合意しておくこと。あったほうが内容確認時に便利
途中の空行
  • あり(完全に空)
  • あり(カンマだけ)
  • なし
プログラム上でおかしくなる可能性
最終行
  • 改行つける
  • 改行つけない
プログラム上でおかしくなる可能性
項目内改行
  • あり
  • なし
なるべくなしにしたい。ありの場合で Excelを使ったとき、項目内改行の改行コードはCRである。
空データ
  • ありえる
  • なし
CSVというより一般常識。あとファイル作るか作らないかも。ヘッダーも注意。
記号、制御文字
  • 入ってくる
  • 入ってこない
これも常識
ユーザーがExcelでみたり操作するか
  • する
  • しない
様々なExcelトラップがある。0はじまり文字列の0が表示上消えたり、勝手に日付として解釈したり。
そのためユーザーに良い開き方を教えたり項目内容を工夫したりする必要がある。
項目をダブルクオートでくくるか
  • くくる
  • くくらない
くくる場合はさらに考える事が
  • 一部項目だけくくる
  • ダブルクオート内のダブルクオートはどうするか
  • シングルクオートでくくる
  • 項目が空データの場合はくくるかくくらないか

ファイルは結合度が高く、データ連携としては原始的です。
そもそもCSVで渡す必要性を考えつつ、素直に作りましょう。