Zum Hauptinhalt springen

4. Datenformate (Data Formats)

Ein Atom (Atom) besteht aus einem oder mehreren nicht-speziellen Zeichen.

4.2. Zahl (Number)

Eine Zahl (Number) besteht aus einem oder mehreren Ziffernzeichen und repräsentiert einen numerischen Wert.

4.3. Zeichenkette (String)

Eine Zeichenkette (String) liegt in einer von zwei Formen vor: entweder als Literal (Literal) oder als zitierte Zeichenkette (Quoted String). Die Literalform ist die allgemeine Form der Zeichenkette. Die zitierte Zeichenkettenform ist eine Alternative, die den Overhead der Verarbeitung eines Literals vermeidet, jedoch auf Kosten von Einschränkungen bei den verwendbaren Zeichen.

Ein Literal ist eine Sequenz von null oder mehr Oktetten (einschließlich CR und LF), die mit einer Oktettanzahl in Form einer öffnenden geschweiften Klammer ("), der Anzahl der Oktette, einer schließenden geschweiften Klammer (") und CRLF vorangestellt wird. Im Fall von Literalen, die vom Server zum Client übertragen werden, folgt unmittelbar nach dem CRLF die Oktettdaten. Im Fall von Literalen, die vom Client zum Server übertragen werden, MUSS (MUST) der Client warten, bis er eine Befehlsfortsetzungsanforderung (Command Continuation Request, später in diesem Dokument beschrieben) erhält, bevor er die Oktettdaten (und den Rest des Befehls) sendet.

Eine zitierte Zeichenkette ist eine Sequenz von null oder mehr 7-Bit-Zeichen, ohne CR und LF, mit doppelten Anführungszeichen (">) an beiden Enden.

Die leere Zeichenkette wird entweder als "" (eine zitierte Zeichenkette mit null Zeichen zwischen doppelten Anführungszeichen) oder als 0 gefolgt von CRLF (ein Literal mit einer Oktettanzahl von 0) dargestellt.

Hinweis: Selbst wenn die Oktettanzahl 0 ist, MUSS (MUST) ein Client, der ein Literal überträgt, warten, bis er eine Befehlsfortsetzungsanforderung erhält.

4.3.1. 8-Bit- und Binärzeichenketten (8-bit and Binary Strings)

8-Bit-Text- und Binär-Mail wird durch die Verwendung einer [MIME-IMB]-Inhaltsübertragungskodierung (Content Transfer Encoding) unterstützt. IMAP4rev1-Implementierungen KÖNNEN (MAY) 8-Bit- oder Mehrfach-Oktett-Zeichen in Literalen übertragen, SOLLTEN (SHOULD) dies jedoch nur tun, wenn der [CHARSET] identifiziert ist.

Obwohl eine BINARY-Körperkodierung (Body Encoding) definiert ist, sind nicht kodierte Binärzeichenketten nicht zulässig. Eine „Binärzeichenkette (Binary String)" ist jede Zeichenkette mit NUL-Zeichen. Implementierungen MÜSSEN (MUST) Binärdaten vor der Übertragung in eine Textform wie BASE64 kodieren. Eine Zeichenkette mit einer übermäßigen Anzahl von CTL-Zeichen KANN (MAY) ebenfalls als binär betrachtet werden.

4.4. Geklammerte Liste (Parenthesized List)

Datenstrukturen (Data Structures) werden als „geklammerte Liste (Parenthesized List)" dargestellt: eine Sequenz von Datenelementen, durch Leerzeichen getrennt und an jedem Ende durch Klammern begrenzt. Eine geklammerte Liste kann andere geklammerte Listen enthalten, wobei mehrere Klammerebenen verwendet werden, um Verschachtelung anzuzeigen.

Die leere Liste wird als () dargestellt -- eine geklammerte Liste ohne Mitglieder.

4.5. NIL

Die spezielle Form "NIL" repräsentiert die Nichtexistenz eines bestimmten Datenelements, das als Zeichenkette oder geklammerte Liste dargestellt wird, im Gegensatz zur leeren Zeichenkette "" oder der leeren geklammerten Liste ().

Hinweis: NIL wird niemals für Datenelemente verwendet, die die Form eines Atoms annehmen. Beispielsweise ist ein Postfachname "NIL" ein Postfach mit dem Namen NIL und nicht ein nicht existierender Postfachname. Dies liegt daran, dass das Postfach die "astring"-Syntax verwendet, die ein Atom oder eine Zeichenkette ist. Umgekehrt ist ein addr-name von NIL ein nicht existierender persönlicher Name, da addr-name die "nstring"-Syntax verwendet, die NIL oder eine Zeichenkette ist, aber niemals ein Atom.