Re: Encodage, charset et type MIME

Liste des GroupesRevenir à fcl python 
Sujet : Re: Encodage, charset et type MIME
De : om+news (at) *nospam* miakinen.net (Olivier Miakinen)
Groupes : fr.comp.usenet.lecteurs-de-news fr.comp.lang.python
Suivi-à : fr.comp.lang.python
Date : 18. Jan 2024, 12:14:15
Autres entêtes
Organisation : There's no cabale
Message-ID : <uoatlo$bjt$1@cabale.usenet-fr.net>
References : 1
User-Agent : Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0 SeaMonkey/2.49.4
[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

Date Sujet#  Auteur
18 Jan 24 o Re: Encodage, charset et type MIME1Olivier Miakinen

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal