📖RFC 4180 CSVの仕様を読む

https://www.ietf.org/rfc/rfc4180.txt

  1. Introduction ....................................................2
    2. Definition of the CSV Format ....................................2
    3. MIME Type Registration of text/csv ..............................4
    4. IANA Considerations .............................................5
    5. Security Considerations .........................................5
    6. Acknowledgments .................................................6
    7. References ......................................................6
    7.1. Normative References .......................................6
    7.2. Informative References .....................................6

カンマ区切り値(CSV)形式は、かなり以前から様々な表計算プログラム間でデータを交換・変換するために使用されてきた。驚くべきことに、この形式は非常に一般的であるが、正式に文書化されたことはない。さらに、IANAのMIME登録ツリーには "text/tab-separated-values "型の登録があるが、CSV用のMIMEタイプはIANAに登録されたことがない。 このRFCは、カンマ区切り値(CSV)ファイルのフォーマットを文書化し、RFC 2048 [1]に従い、CSV用の "text/csv "MIMEタイプを正式に登録する。

https://www.ietf.org/rfc/rfc4180.txt

CSVフォーマットにはさまざまな仕様や実装があるが(たとえば[4]、[5]、[6]、[7])、CSVファイルの多様な解釈を可能にするような正式な仕様は存在しない:

   The ABNF grammar [2] appears as follows:

   file = [header CRLF] record *(CRLF record) [CRLF]

   header = name *(COMMA name)

   record = field *(COMMA field)

   name = field

   field = (escaped / non-escaped)

   escaped = DQUOTE *(TEXTDATA / COMMA / CR / LF / 2DQUOTE) DQUOTE

   non-escaped = *TEXTDATA

   COMMA = %x2C

   CR = %x0D ;as per section 6.1 of RFC 2234 [2]

   DQUOTE =  %x22 ;as per section 6.1 of RFC 2234 [2]

   LF = %x0A ;as per section 6.1 of RFC 2234 [2]

   CRLF = CR LF ;as per section 6.1 of RFC 2234 [2]

   TEXTDATA =  %x20-21 / %x23-2B / %x2D-7E

CSVの一般的な用法はUS-ASCIIだが、IANAが "text "ツリー用に定義した他の文字セットも併用できる。 しかし、"text "ツリー用にIANAによって定義された他の文字セットも、 "charset "パラメータと組み合わせて使うことができる。 "charset "パラメータと併用することができる。 header "パラメータは、ヘッダー行の有無を示す。 ヘッダー行の有無を示す。 有効な値は "present "または "absent "である。 このパラメータを使用しないことを選択した実装者は、ヘッダー行が存在 するかどうかについて、自分自身で決定しなければならない。 このパラメータを使用しないことを選択する実装者は、ヘッダー行が存在 するか存在しないかについて、自分自身で決定しなければならない。

CSVって何?

CSVっていうのは、「Comma-Separated Values」の略。簡単に言うと、データをカンマ(,)で区切って保存する方法さ。たとえば、友達の名前と電話番号を整理したいときに使えるよ。

文字セットの冒険

普通、CSVはUS-ASCIIっていう文字セットを使うんだけど、もっと特別な文字セットも使えるんだ。IANAっていう団体が定義した「text」ツリー用の文字セットも使えるんだよ。だから、君たちが日本語や他の言語を扱うときも心配なしさ!

Charsetパラメータのパワー

特別な文字セットを使うときには、「charset」パラメータを使うんだ。これでパソコンに「このCSVは特別な文字セットを使ってるよ!」って教えられるんだ。たとえば、日本語の文字セットなら「charset=Shift_JIS」とか「charset=UTF-8」って指定するんだ。

ヘッダーの秘密

CSVファイルには「header」パラメータっていうのもあるんだ。これは、ファイルの最初にヘッダー行があるかどうかを教えるものなんだ。ヘッダー行っていうのは、各列に何が入ってるかを説明する行のことさ。

  • header=present:ヘッダー行があるよ!

  • header=absent:ヘッダー行はないよ!

もしこのパラメータを使わないときは、自分でヘッダー行があるかどうかを決めないといけないんだ。

まとめ

CSVファイルはデータをカンマで区切って保存するシンプルで便利な方法さ。文字セットやヘッダーの設定をちゃんと理解すれば、もっともっと便利に使えるよ。君たちもデジタルの冒険者として、CSVを使いこなして素敵なデータ整理を楽しもう!

お願い致します