Quoted-Printable-Kodierung
Die Quoted-Printable-Kodierung (aus englisch quoted printable mit quoted im Sinne von maskiert, also „druckbar durch Maskierung“) – auch kurz QP-Kodierung[1] genannt – ist ein Verfahren, bei dem einzelne Zeichen (oder Bytes) außerhalb des ASCII-Zeichensatzes speziell übersetzt (oder kodiert) werden. Sie ist ein vorgeschlagener Internetstandard und seit November 1996 im RFC 2045 beschrieben.[2] Sie wird vor allem als zusätzliche Kodierung bei E-Mails verwendet, da bis heute nicht sichergestellt ist, dass alle Zwischenstellen beim E-Mail-Versand sämtliche 8-Bit-Zeichen (entspricht 256 Möglichkeiten je Byte) verarbeiten können; die ursprüngliche E-Mail-Spezifikation sah nur 7 Bit vor (128 Möglichkeiten je Byte).
Weitere Einzelheiten
Um trotzdem Zeichen aus dem Bereich 127–255 verwenden zu können, ohne dabei die Kompatibilität zu älteren Systemen zu gefährden, werden diese Zeichen zusätzlich kodiert. Dabei werden sämtliche Bytes außerhalb der dezimalen ASCII-Bereiche 9, 32–60 und 62–126 durch ein =
-Zeichen, gefolgt vom Hexadezimalwert des Bytes, ersetzt. Das =
-Zeichen befindet sich außerhalb dieses Bereichs (ASCII-Wert 61) und wird daher ebenso mit =3D
kodiert. Besonders zu beachten ist, dass CR und LF soweit sie nicht als Zeilenumbruch verwendet werden sollen, in der Form =0D
bzw. =0A
dargestellt werden müssen.
Erlaubte Zeichen:
ASCII-Dezimalcode | Erlaubte Zeichen |
---|---|
9 | Tabulatorzeichen |
32–60 | Leerzeichen und !"#$%&'()*+,-./0123456789:;< |
62–126 | >?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ |
Darüber hinaus wird, falls die ursprüngliche Zeile auf ein Leerzeichen (ASCII 32) geendet hatte, dieses als =20
codiert. Auf diese Weise ist sowohl garantiert, dass Transportmechanismen, die Leerzeichen am Zeilenende entfernen, die Daten nicht beschädigen, als auch, dass beim Ausdrucken einer QP-codierten Datei erkennbar bleibt, wie viele Leerzeichen sich am Ende der Zeile befunden hatten. Dementsprechend wird auch das Tabulatorzeichen (ASCII 9) oft generell durch =09
ersetzt (obwohl seine Unversehrtheit beim Mailtransport eigentlich garantiert ist), damit die gedruckte Form absolut eindeutig ist.
Um die Länge der Zeilen auf 76 Zeichen zu begrenzen, wird bei längeren Zeilen nach meist 75 Zeichen ein =
an das Zeilenende gesetzt und der Text in der nächsten Zeile fortgesetzt. Der auf diese Weise erzwungene Zeilenumbruch wird beim Dekodieren wieder entfernt.
Beispiel
Hätten Hüte ein ß im Namen, wären sie möglicherweise keine Hüte mehr, sondern Hüße.
Dieser Text im Zeichensatz ISO 8859-1 als quoted-printable kodiert:
H=E4tten H=FCte ein =DF im Namen, w=E4ren sie m=F6glicherweise keine H=FCte= mehr, sondern H=FC=DFe.
Man erkennt die kodierten Umlaute sowie den erzwungenen Zeilenumbruch nach dem Wort „Hüte“, bei dem das Leerzeichen in die nächste Zeile verschoben wird. Der ursprünglich vorhandene Zeilenumbruch hinter „mehr,“ ist noch ohne ein =
am Ende vorhanden und wird beim Dekodieren beibehalten.
Weblinks
- N. Freed, N. Borenstein: RFC 2045 - "Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies". IETF, Network Working Group, November 1996 (englisch).
- Online Quoted-Printable Encoder
- Online Quoted-Printable Decoder
- webatic: Encode/Decode Quoted Printable
Einzelbelege
- Auf Nummer Sicher: Quoted Printable – Seite 143 in Start mit E-Mail – Easy: So geht die Post ab! bei Markt und Technik, 2005; ISBN 3-8272-6933-4.
- RFC 2045 – Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies (englisch) – IETF, November 1996.