Datei hochladen
  1. base64hub
  2. Web- & Token-Tools
  3. Quoted-printable

Quoted-Printable-Encoder und -Decoder

Dekodieren Sie Quoted-Printable-Text aus E-Mails wie Gr=C3=BC=C3=9Fe zurück in Grüße, oder kodieren Sie Text so wie ein Mailprogramm: =XX für Bytes, die es brauchen, und weiche Zeilenumbrüche bei 76 Zeichen.

Kostenlos ohne Anmeldung, ohne Limits Lokal kein Upload Python bytegenau wie binascii.b2a_qp Aktualisiert 27.10.2026
Eingabe 0Bytes 0 BAusgabe 0

Wird in Ihrem Browser verarbeitet. Diese Seite kann Ihre Daten nirgendwohin senden – woher wir das wissen

So dekodieren Sie Quoted-Printable

  1. Klicken Sie über dem Tool auf Quoted-printable → Text, um auf Dekodieren umzuschalten.
  2. Fügen Sie den kodierten Text in die Eingabe ein, zum Beispiel einen Body-Teil aus dem Quelltext einer E-Mail.
  3. Lesen Sie den Text in der Ausgabe. Sehen Umlaute oder Akzente falsch aus, stellen Sie unter der Ausgabe Zeichensatz auf den Zeichensatz, den der Header Content-Type des Teils nennt, etwa charset=iso-8859-1.
  4. Ausgabe kopieren oder Herunterladen. Weiche Zeilenumbrüche werden zusammengefügt, und jedes =XX wird wieder zu seinem Byte.

Zum Kodieren lassen Sie die Richtung auf Text → Quoted-printable und tippen oder fügen den Text ein. Zeichensatz unter der Eingabe bestimmt, zu welchen Bytes Nicht-ASCII-Zeichen werden.

Wie Quoted-Printable funktioniert

Quoted-Printable (RFC 2045, Abschnitt 6.7) lässt Text lesbar, wo es geht, und maskiert nur, was sein muss:

  • Druckbare ASCII-Zeichen bleiben unverändert, außer =.
  • Jedes andere Byte wird als = plus zwei Hex-Ziffern in Großbuchstaben geschrieben. In UTF-8 wird so jedes Nicht-ASCII-Zeichen zu zwei bis vier Escape-Sequenzen.
  • = selbst wird zu =3D.
  • Ein Leerzeichen oder Tab am Zeilenende wird zu =20 bzw. =09.
  • Zeilen haben höchstens 76 Zeichen. Längere werden mit einem weichen Zeilenumbruch geteilt: einem = am Zeilenende, das der Decoder wieder entfernt.
TextQuoted-printable
cafécaf=C3=A9
Grüße aus MünchenGr=C3=BC=C3=9Fe aus M=C3=BCnchen
100% = €5100% =3D =E2=82=AC5
<p style="color:red">Hi</p><p style=3D"color:red">Hi</p>
Caf=E9 als ISO-8859-1 dekodiertCafé

In der letzten Zeile ist =E9 ein einzelnes Byte: é in ISO-8859-1 und Windows-1252, für sich allein in UTF-8 aber ungültig. Das Ergebnis hängt also vom Zeichensatz ab, mit dem Sie dekodieren.

Textmodus und Binärmodus

Standardmäßig behandelt der Encoder die Eingabe als Text. Zeilenumbrüche bleiben echte Zeilenumbrüche, und wie bei Pythons binascii.b2a_qp wird ein späteres einzelnes LF ebenfalls zu CRLF, wenn die erste Zeile auf CRLF endet. Für E-Mail-Text ist das richtig, es verändert aber die Bytes.

Aktivieren Sie Zeilenumbrüche kodieren (binär), wenn es auf die exakten Bytes ankommt. Zeilenumbrüche werden dann als =0D und =0A geschrieben, aus Hello, CRLF, World wird also Hello=0D=0AWorld, und das Dekodieren liefert genau das zurück, was hineinging. Für echte Binärdaten wie Bilder ist Base64 ohnehin die bessere Wahl.

Quoted-Printable oder Base64 in E-Mails

Mailprogramme wählen das Content-Transfer-Encoding für jeden MIME-Teil einzeln. Quoted-Printable passt zu Text, der überwiegend aus ASCII besteht, weil er lesbar bleibt und kaum wächst. Base64 hat einen festen Overhead von etwa 33 % und gewinnt, sobald die meisten Bytes maskiert werden müssen:

TextUTF-8-BytesQuoted-printableBase64
Grüße aus München2032 Zeichen28 Zeichen
Привет, мир (Russisch)2056 Zeichen28 Zeichen

Schon deutscher Text mit drei Nicht-ASCII-Buchstaben auf 17 Zeichen ist in Quoted-Printable größer als in Base64; Kyrillisch ist doppelt so groß wie in Base64. Die Base64-Form mit den 76-Zeichen-Zeilen, die E-Mail verlangt, erzeugt der MIME-Base64-Encoder. Base64 in E-Mails erklärt, wie beide Kodierungen in einer Nachricht auftauchen, auch in Anhängen und kodierten Headern.

Eine ganze E-Mail lesen

Einen einzelnen Body-Teil aus einer Rohnachricht zu kopieren reicht für einen schnellen Blick. Für eine vollständige .eml-Datei parst der E-Mail-Decoder die Header, dekodiert Quoted-Printable- und Base64-Teile mit ihren angegebenen Zeichensätzen und listet Anhänge zum Herunterladen auf. Quoted-Printable kommt auch außerhalb von E-Mails vor, zum Beispiel in vCard-2.1-Dateien mit ENCODING=QUOTED-PRINTABLE; fügen Sie hier den Wert nach dem Doppelpunkt ein.

Quoted-Printable im Code

import quopri
quopri.encodestring("café".encode("utf-8"))            # b'caf=C3=A9'
quopri.decodestring(b"caf=C3=A9 =3D 5=E2=82=AC").decode("utf-8")   # 'café = 5€'

Pythons Paket email wendet die richtige Dekodierung automatisch an: msg.get_payload(decode=True) liefert die dekodierten Bytes eines Teils, egal welches Transfer-Encoding er verwendet. Die Seite Python behandelt die Base64-Seite.

Häufige Fragen

Was bedeutet =3D in einer E-Mail?

Es ist ein kodiertes Gleichheitszeichen. In Quoted-Printable leitet = eine Escape-Sequenz ein, deshalb muss ein echtes = als =3D geschrieben werden, also als sein Bytewert in Hex. In HTML-Mails sieht man das ständig, etwa in style=3D"color:red".

Warum enden Zeilen im E-Mail-Quelltext mit =?

Das ist ein weicher Zeilenumbruch. Quoted-Printable-Zeilen dürfen höchstens 76 Zeichen lang sein, längere Zeilen werden daher geteilt und jede Trennstelle mit einem = am Zeilenende markiert. Ein Decoder fügt die Teile wieder zu einer Zeile zusammen.

Was bedeutet =20 am Ende einer Zeile?

Ein kodiertes Leerzeichen. Mailsysteme dürfen Leerzeichen am Zeilenende entfernen, deshalb schützt Quoted-Printable ein Leerzeichen oder einen Tab am Zeilenende, indem es ihn als =20 bzw. =09 schreibt.

Wie dekodiere ich Quoted-Printable in Python?

quopri.decodestring(data) oder binascii.a2b_qp(data) liefern Bytes; rufen Sie danach .decode("utf-8") auf oder den Zeichensatz, den der Header Content-Type nennt.

Kann das Tool Betreffzeilen wie =?UTF-8?Q?...?= dekodieren?

Nicht auf dieser Seite. Das sind Encoded Words nach RFC 2047, die eine verwandte Q-Kodierung mit _ für Leerzeichen verwenden. Der E-Mail-Decoder dekodiert sie in Headern, zusammen mit Quoted-Printable-Inhalten.