CSVのあれやこれや
CSVの仕様書(RFC4180)を読んだので、ずっと疑問だったことについて、ちょろっとまとめてみます。
ヘッダーの有無の判定
CSVにはヘッダーが付いている場合がある訳ですが、形式がデータ行と同じなので、文字列だけ見ても判断が付きません。これについて仕様書によると、MIME Typeのパラメータで判定しましょうとのこと。具体的には、以下のようになります
ヘッダーがある場合 | text/csv; charset=utf-8; header=present | ||
---|---|---|---|
ヘッダーがない場合 | text/csv; charset=utf-8; header=absent |
「"」のエスケープ
カラム内で「,」や改行を使用する場合、カラム全体を「"」で囲みます(エスケープ)。さらにエスケープされたカラム内で「"」を使いたい場合、「""」を使います。「"」で「"」をエスケープする感じですね。
コメント行
記載なし。使えないということですかね・・・。
行の最後のカンマ
付けてはダメとのこと。
ダメな行 | aaa,bbb,ccc, | ||
---|---|---|---|
正しい行 | aaa,bbb,ccc |
行区切り
「CRLF」(%x0D%x0A)となっています。正式には「CR」や「LF」だけはダメみたいです。