Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > fr.comp.lang.python > #4172
| From | Olivier Miakinen <om+news@miakinen.net> |
|---|---|
| Newsgroups | fr.comp.usenet.lecteurs-de-news, fr.comp.lang.python |
| Subject | Re: Encodage, charset et type MIME |
| Followup-To | fr.comp.lang.python |
| Date | 2024-01-18 11:14 +0100 |
| Organization | There's no cabale |
| Message-ID | <uoatlo$bjt$1@cabale.usenet-fr.net> (permalink) |
| References | <slrnuqhnvu.nfk.doug.letough@arcadia.local.mcos.nc> |
Cross-posted to 2 groups.
Followups directed to: fr.comp.lang.python
[diapublication, suivi vers fr.comp.lang.python] Bonjour Doug, Le 18/01/2024 09:23, Doug713705 a écrit : > > Je suis en train de coder un petite app en Python dont l'objectif et de > traiter des mails de diverses provenances dont Usenet. > > Ça fait maintenant quelques années que je me suis éloigné d'Usenet et > j'ai complètement oublié tout ce que je pouvais savoir sur les > subtilités et pièges qui se cachent derrière les notions de charset, > d'encodage et de type MIME. > > En clair, je lutte pour décoder de manière fiable les articles en > provenance d'Usenet lorsque le corps d'un article est encodé en utf-8 et > publié en Quoted-Printable. Ça devient le bazar avec des "=" en fin de > ligne qui se mélangent avec ceux des caractères encodés en UTF-8. C'est défini dans le RFC 2045 : <https://datatracker.ietf.org/doc/html/rfc2045#section-6.7> En gros il y a deux situations possibles pour le caractère = : - soit il est suivi de deux chiffres hexa (0 à 9 ou A à F, mais je te recommande d'accepter aussi les minuscules a à f) ; - soit il est suivi de CRLF (avec éventuellement des espaces ou tabulations qui pourraient avoir été ajoutées entre = et CRLF et qu'il faut ignorer). Aussi, à moins d'être sûr qu'on ne t'envoie que de l'UTF-8 et que du quoted-printable, il pourrait être sage de traiter aussi le cas des autres charsets et celui du base64. > Autre interrogation, je suppose que les entêtes (headers) d'un article > sont systématiquement en iso-8859-1 sauf le sujet qui peut être en UTF-8 > Quoted-Printable. J'ai bon ? Ah non, certainement pas. Les différentes normes de l'IETF évoluent de plus en plus pour accepter l'UTF-8 là où avant il n'y avait que de l'US-ASCII, mais l'ISO-8859-1 brut n'a jamais été accepté en standard dans des entêtes de courriel ou de news (même si au début de usenet-fr c'était toléré à défaut de meilleure solution). La meilleure solution n'est arrivée qu'en 1996 (après des balbutiements en 1993) sous la forme du RFC 2047 : <https://datatracker.ietf.org/doc/html/rfc2047>. > Vous l'aurez compris, j'ai besoin qu'on me raffraichisse la mémoire sur > comment décoder tout ce fatras. Un lien vers une documentation, voire > des exemples, seraient bienvenus. Puisque c'est en python, inutile de réinventer la roue. Utilise les packages standards qui font tout ça très bien : <https://docs.python.org/3/library/email.html> [suivi fr.comp.lang.python] -- Olivier Miakinen
Back to fr.comp.lang.python | Previous | Next | Find similar
Re: Encodage, charset et type MIME Olivier Miakinen <om+news@miakinen.net> - 2024-01-18 11:14 +0100
csiph-web