Zum Hauptinhalt springen

2. Definition des CSV-Formats (Definition of the CSV Format)

Während es verschiedene Spezifikationen und Implementierungen für das CSV-Format gibt (z.B. [4], [5], [6] und [7]), existiert keine formelle Spezifikation, was eine Vielzahl von Interpretationen von CSV-Dateien ermöglicht. Dieser Abschnitt dokumentiert das Format, das von den meisten Implementierungen befolgt zu werden scheint:

  1. Jeder Datensatz (Record) befindet sich auf einer separaten Zeile, die durch einen Zeilenumbruch (CRLF) getrennt ist. Zum Beispiel:

    aaa,bbb,ccc CRLF
    zzz,yyy,xxx CRLF
  2. Der letzte Datensatz in der Datei kann einen abschließenden Zeilenumbruch haben oder nicht. Zum Beispiel:

    aaa,bbb,ccc CRLF
    zzz,yyy,xxx
  3. Es kann (may) eine optionale Kopfzeile (Header Line) geben, die als erste Zeile der Datei mit demselben Format wie normale Datensatzzeilen erscheint. Diese Kopfzeile enthält Namen, die den Feldern in der Datei entsprechen, und sollte (should) dieselbe Anzahl von Feldern enthalten wie die Datensätze im Rest der Datei (das Vorhandensein oder Fehlen der Kopfzeile sollte über den optionalen Parameter "header" dieses MIME-Typs angezeigt werden). Zum Beispiel:

    field_name,field_name,field_name CRLF
    aaa,bbb,ccc CRLF
    zzz,yyy,xxx CRLF
  4. Innerhalb der Kopfzeile und jedes Datensatzes kann (may) es ein oder mehrere Felder (Field) geben, die durch Kommas getrennt sind. Jede Zeile sollte (should) die gleiche Anzahl von Feldern in der gesamten Datei enthalten. Leerzeichen werden als Teil eines Feldes betrachtet und sollten nicht (should not) ignoriert werden. Das letzte Feld im Datensatz darf nicht (must not) von einem Komma gefolgt werden. Zum Beispiel:

    aaa,bbb,ccc
  5. Jedes Feld kann (may) in doppelte Anführungszeichen eingeschlossen sein oder nicht (einige Programme wie Microsoft Excel verwenden jedoch überhaupt keine doppelten Anführungszeichen). Wenn Felder nicht in doppelte Anführungszeichen eingeschlossen sind, dann dürfen (may not) doppelte Anführungszeichen nicht innerhalb der Felder erscheinen. Zum Beispiel:

    "aaa","bbb","ccc" CRLF
    zzz,yyy,xxx
  6. Felder, die Zeilenumbrüche (CRLF), doppelte Anführungszeichen und Kommas enthalten, sollten (should) in doppelte Anführungszeichen eingeschlossen werden. Zum Beispiel:

    "aaa","b CRLF
    bb","ccc" CRLF
    zzz,yyy,xxx
  7. Wenn doppelte Anführungszeichen verwendet werden, um Felder einzuschließen, dann muss (must) ein doppeltes Anführungszeichen, das innerhalb eines Feldes erscheint, durch Voranstellen eines weiteren doppelten Anführungszeichens maskiert werden. Zum Beispiel:

    "aaa","b""bb","ccc"

Die ABNF-Grammatik (ABNF Grammar) [2] erscheint wie folgt:

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