Was hat es mit all diesen Gleichheitszeichen (=) auf sich?
(lars.ingebrigtsen.no)- Kürzlich verbreiteten sich auf Twitter Zitate aus alten E-Mails, wodurch die Frage aufkam, warum am Satzende Gleichheitszeichen (=) erscheinen
- Diese Zeichen entstehen im Zuge der „quoted-printable“-Kodierung und dienen dazu, beim erzwungenen Umbrechen langer Zeilen anzuzeigen, dass die Zeile fortgesetzt wird
- Beim E-Mail-Transport wird CRLF (Carriage Return + Line Feed) als Zeilenumbruch verwendet; wird dies in Unix-NL umgewandelt, können bei fehlerhaft arbeitenden Dekodieralgorithmen Gleichheitszeichen zurückbleiben oder Zeichen verloren gehen
- Das Gleichheitszeichen wird außer für Zeilenumbrüche auch zur Darstellung von Nicht-ASCII-Zeichen (z. B.
=C2=A0) verwendet; fehlerhafte Decoder ersetzen dies nur simpel und verursachen so Fehler - Die Ursache des Problems liegt in fehlerhafter Dekodierlogik und ungeeigneter Konvertierungsbehandlung, was zeigt, dass die Person, die die E-Mails verarbeitet hat, technisch nicht besonders versiert war
Die Bedeutung der Gleichheitszeichen (=) in E-Mail-Zitaten
-
In den letzten Tagen wurden auf Twitter zahlreiche alte E-Mail-Zitate geteilt, bei denen die Gleichheitszeichen am Satzende auffielen
- Der Autor widerspricht Behauptungen, dies sei ein Code- oder OCR-Fehler (optische Zeichenerkennung)
- Tatsächlich handelt es sich um einen Fehler bei der Kodierungsverarbeitung, der beim Umwandeln in ein besser lesbares Format entstanden ist
-
E-Mails waren früher einfacher Text, doch zur Verarbeitung langer Zeilen und von Sonderzeichen wurde die „quoted-printable“-Kodierung eingeführt
- Beim Aufteilen langer Zeilen wird am Zeilenende ein Gleichheitszeichen (=) angehängt, um zu markieren: „Diese Zeile wird fortgesetzt“
- Auf das Gleichheitszeichen folgt dabei CRLF (Carriage Return + Line Feed)
Fehler bei Zeilenumbruch-Kodierung und -Dekodierung
-
E-Mail-Server verwenden standardmäßig CRLF als Zeilenumbruch, Unix-Systeme dagegen nur NL
- Bei der Umwandlung geht ein Byte verloren; verarbeitet der Decoder dies falsch, bleiben Gleichheitszeichen stehen oder Zeichen verschwinden
- Beispiel: Wenn „non- =CRLF cloven“ falsch verarbeitet wird, kann daraus „non- loven“ werden, wobei das „c“ verschwindet
-
Manche Implementierungen verarbeiten ein Gleichheitszeichen am Zeilenende, indem sie einfach zwei Zeichen löschen
- Dieser Algorithmus funktioniert bei Dateien im Unix-Format fehlerhaft, sodass Gleichheitszeichen unverändert stehen bleiben
Ein weiterer Zweck des Gleichheitszeichens: Nicht-ASCII-Zeichen kodieren
-
Das Gleichheitszeichen wird nicht nur für Zeilenumbrüche, sondern auch zur Kodierung von Nicht-ASCII-Zeichen verwendet
- Beispiel:
=C2=A0steht für ein geschütztes Leerzeichen (non-breaking space) - In E-Mail-Texten taucht dies häufig bei Einrückungen oder zur Darstellung von Sonderzeichen auf
- Beispiel:
-
Der Autor vermutet, dass einige Konvertierungsprogramme
=C2,=A0usw. nur per einfacher Suche-und-Ersetzen-Logik verarbeitet haben, anstatt einen korrekten Decoder zu verwenden
Technischer Hintergrund und Standard
-
Der Standard RFC 2045 definiert die quoted-printable-Kodierung als Transportformat
- Nach dem Empfang sollte sie dekodiert und als sauberer Text gespeichert werden
- In realen Implementierungen wird dieser Schritt jedoch oft ausgelassen, wodurch Fehler bei der Zeilenumbruch-Behandlung häufig auftreten
-
Im Beispielcode wird
(quoted-printable-decode-string "he=\nllo")korrekt zu"hello"rekonstruiert- Der Grund ist die Wiederverwendung eines Algorithmus, der im Kontext von SMTP-Servern von CRLF ausgeht
- Bei Windows-basierten Dateien funktioniert das korrekt, bei Unix-basierten hingegen nicht
Fazit
- Die Gleichheitszeichen in E-Mail-Zitaten sind Überreste der quoted-printable-Kodierung und das Ergebnis einer Kombination aus
fehlerhafter Zeilenumbruch-Behandlung und mangelhafter Dekodierung von Nicht-ASCII-Zeichen - Die eigentliche Ursache des Problems sind ungenaue Decoder-Implementierungen und Fehler bei der Kodierungskonvertierung
- Der Autor fasst dies als „technisches Problem und Ergebnis fehlerhafter Verarbeitung“ zusammen und betont, wie wichtig eine präzise Einhaltung der Standards bei der E-Mail-Konvertierung ist
Noch keine Kommentare.