C’est quoi, tous ces signes égal (=), au juste ?
(lars.ingebrigtsen.no)- Récemment, d’anciennes citations d’e-mails ont circulé sur Twitter, suscitant des questions sur la présence de signes égal (=) en fin de phrase
- Ces signes apparaissent lors du processus d’encodage « quoted-printable », où ils servent à indiquer qu’une ligne longue a été coupée et qu’elle continue à la ligne suivante
- Lors de l’envoi d’e-mails, le saut de ligne standard est CRLF (retour chariot + saut de ligne), mais lorsqu’il est converti en NL d’Unix, un mauvais fonctionnement de l’algorithme de décodage peut laisser des signes égal ou faire disparaître des caractères
- Le signe égal sert aussi à représenter des caractères non ASCII (ex. : =C2=A0), et un décodeur défectueux peut provoquer des erreurs en les remplaçant de manière simpliste
- À l’origine du problème : une logique de décodage boguée et un traitement de conversion inadapté, ce qui montre que la personne ayant transformé l’e-mail maîtrisait mal l’aspect technique
L’origine des signes égal (=) dans les citations d’e-mails
-
Ces derniers jours, de nombreuses anciennes citations d’e-mails ont été partagées sur Twitter, avec un phénomène frappant : des signes égal visibles en fin de phrase
- L’auteur réfute les hypothèses selon lesquelles il s’agirait d’une erreur de code ou d’OCR (reconnaissance optique de caractères)
- En réalité, il s’agit d’une erreur de traitement d’encodage survenue lors de la conversion de l’e-mail dans un format plus lisible
-
À l’origine, les e-mails étaient du simple texte, mais pour gérer les lignes longues et les caractères spéciaux, l’encodage « quoted-printable » a été introduit
- Lorsqu’une ligne longue est coupée, un signe égal (=) est ajouté en fin de ligne pour indiquer que « cette ligne continue »
- Après ce signe égal vient alors CRLF (retour chariot + saut de ligne)
Erreurs d’encodage et de décodage des sauts de ligne
-
Les serveurs de messagerie utilisent CRLF comme saut de ligne standard, alors que les systèmes Unix n’utilisent que NL
- Pendant la conversion, un octet disparaît, et si le décodeur le gère mal, le signe égal peut rester ou des caractères peuvent manquer
- Par exemple, si « non- =CRLF cloven » est mal traité, on peut obtenir « non- loven », avec disparition du
c
-
Certaines implémentations traitent le signe égal en fin de ligne en supprimant simplement deux caractères
- Cet algorithme dysfonctionne sur les fichiers au format Unix, ce qui laisse le signe égal tel quel
Un autre usage du signe égal : l’encodage des caractères non ASCII
-
Le signe égal est aussi utilisé pour l’encodage des caractères non ASCII, en plus des sauts de ligne
- Exemple :
=C2=A0signifie non-breaking space (espace insécable) - On le rencontre souvent dans le corps des e-mails pour l’indentation ou l’expression de caractères spéciaux
- Exemple :
-
L’auteur suppose que certains convertisseurs se sont contentés d’un simple search-replace sur
=C2,=A0, etc., sans utiliser de décodeur correct
Contexte technique et standard
-
La norme RFC 2045 définit l’encodage quoted-printable comme un mécanisme de transport
- Après réception, il doit en principe être décodé puis stocké sous forme de texte propre
- Mais dans les implémentations réelles, cette étape est parfois omise, d’où des erreurs fréquentes dans le traitement des sauts de ligne
-
Dans l’exemple de code,
(quoted-printable-decode-string "he=\nllo")est correctement restauré en"hello"- Cela vient du fait qu’un algorithme supposant le contexte CRLF des serveurs SMTP a été réutilisé
- Il fonctionne correctement sur les fichiers Windows, mais échoue sur Unix
Conclusion
- Les signes égal dans les citations d’e-mails sont des résidus de l’encodage quoted-printable et le résultat combiné de défauts dans le traitement des sauts de ligne et le décodage des caractères non ASCII
- La cause profonde du problème est une implémentation imprécise du décodeur et des erreurs de conversion d’encodage
- L’auteur résume cela comme un problème technique et le résultat d’un mauvais traitement, et souligne la nécessité de respecter scrupuleusement les standards lors de la conversion des e-mails
Aucun commentaire pour le moment.