Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Encodage, charset et type MIME

2 views
Skip to first unread message

Doug713705

unread,
Jan 18, 2024, 3:23:28 AM1/18/24
to
Bonjour à toutes et tous,

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.

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 ?

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.

À votre bon coeur :)

XP fr.comp.usenet.serveurs et fr.comp.mail
FU2 fr.comp.usenet.lecteurs-de-news
--
Doug
Envoyé depuis mon Jacob Delafon 3000 Turbo

Doug713705

unread,
Jan 18, 2024, 4:00:18 AM1/18/24
to
Le 18-01-2024, M.V. <m...@gmail.com.invalid> a écrit :
> Bonjour,
>
> Dans le message <slrnuqhnvu.nf...@arcadia.local.mcos.nc>,
> Doug713705 a écrit le 18 janvier 2024 à 09 h 23 :
>
>> 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 ?
>
> Non, pas forcément.
> Tous les encodages sont en réalité possibles même si la variété utilisée
> est très réduite.
> Ici, dans <news:uoalga$kb9$1...@rasp.pasdenom.info> tu as de l'UTF-8
> Base64.

Ok. Merci.

> Ici, dans <news:e8bb873b-9847-a2d1...@miakinen.net>, il
> n'y a aucun encodage (c'est de l'ASCII).
>
> Et l'encodage ne touche pas forcément le sujet : ici, dans
><news:uoaopi$rue$1...@rasp.pasdenom.info>, c'est le From qui est encodé en
> UTF-8 Base64

En effet, en fait, les entêtes "éditables" doivent pouvoir être encodés:
- From
- Subject
- Organization
- Et même Newsgroups, il me semble qu'on avait testé sur mon serveur la
création et la propagation de newsgroups avec des noms en utf-8 avec accents.

DV

unread,
Jan 18, 2024, 4:01:36 AM1/18/24
to
Doug713705 a écrit ceci :

> 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 ?

Si je ne m'abuse, à part les champs From et Subject qui peuvent recevoir
différents encodages (voir la réponse de M.V.), pour tout le reste,
c'est ASCII et rien d'autre.

--
Denis

Serveurs de news et passerelles web : <http://usenet-fr.yakakwatik.org>
Lecteurs de news : <http://usenet-fr.yakakwatik.org/lecteurs-de-news.html>

DV

unread,
Jan 18, 2024, 4:50:05 AM1/18/24
to
M.V. a écrit ceci :

> Parmi les champs standard, le Reply-To peut aussi être encodé.

J'ai vu ton test. Le pseudo est bien encodé, mais l'accent dans
l'adresse mail ne passe pas (ni dans MacCafé ni dans Thunderbird).

Olivier Miakinen

unread,
Jan 18, 2024, 5:14:18 AM1/18/24
to
[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

Olivier Miakinen

unread,
Jan 18, 2024, 5:45:54 AM1/18/24
to
Le 18/01/2024 10:00, Doug713705 a écrit :
>>
>> Et l'encodage ne touche pas forcément le sujet : ici, dans
>><news:uoaopi$rue$1...@rasp.pasdenom.info>, c'est le From qui est encodé en
>> UTF-8 Base64
>
> En effet, en fait, les entêtes "éditables" doivent pouvoir être encodés:
> - From
> - Subject
> - Organization
> - Et même Newsgroups, il me semble qu'on avait testé sur mon serveur la
> création et la propagation de newsgroups avec des noms en utf-8 avec accents.

D'après le RFC 2047 (qui était prévu pour le courriel et fait donc référence
au RFC 822), un encoded-word peut être utilisé dans ce qui est de type 'text'
comme par exemple les champs Subject: et Comments:, dans ce qui est de type
"phrase" comme par exemple la partie display-name d'un champ From: ou Reply-To:
ou encore le champ Keywords, mais aussi dans tout ce qui est un commentaire
entre parenthèses, donc par exemple dans l'équivalent du display-name pour le
non-regretté MacSOUP.

Le champ Organization n'est pas défini pour le courriel, mais dans le RFC 5536
(dernier RFC sur le format des news¹) il est défini de la même façon que le
champ Subject dans le RFC 5322 (dernier RFC sur le format du mail), donc
c'est bien évidemment autorisé aussi.

En revanche, le format du champ Newsgroups n'autorise absolument pas d'encodage
MIME selon le RFC 2047. La seule possibilité consiste à autoriser des caractères
hors d'US-ASCII, et la seule solution viable est de le faire en UTF-8.

<https://datatracker.ietf.org/doc/html/rfc5536#section-3.1.4>
newsgroups = "Newsgroups:" SP newsgroup-list CRLF

newsgroup-list = *WSP newsgroup-name
*( [FWS] "," [FWS] newsgroup-name ) *WSP

newsgroup-name = component *( "." component )

component = 1*component-char

component-char = ALPHA / DIGIT / "+" / "-" / "_"
</>


--
Olivier Miakinen
¹ En fait non il y a le RFC 6854 mais qui ne le remplace pas.

Olivier Miakinen

unread,
Jan 18, 2024, 5:48:36 AM1/18/24
to
Le 18/01/2024 10:01, Stefan Ram a écrit :
>
> En Python, on peut décoder des messages Usenet avec le
> module "email".

Oui. Désolé pour la redite, je lis en séquence et je réponds au fur et à mesure
(et aussi je n'avais rien vu dans fr.comp.lang.python).

--
Olivier Miakinen

Olivier Miakinen

unread,
Jan 18, 2024, 6:03:09 AM1/18/24
to
Le 18/01/2024 11:01, M.V. a écrit :
> Dans le message <uoas8b$5el$1...@rasp.pasdenom.info>, DV a écrit le 18
> janvier 2024 à 10 h 50 :
>
>> Le pseudo est bien encodé, mais l'accent dans
>> l'adresse mail ne passe pas (ni dans MacCafé ni dans Thunderbird).

Les caractères non-ASCII dans les adresses de courriel font l'objet d'un
RFC de 2012 (premier jet en 2007). Il va falloir du temps avant que les
logiciels s'adaptent.
<https://datatracker.ietf.org/doc/html/rfc6530>.

>
> Le résultat est en effet curieux.
>
> Dans MacSOUP, c'est correct à l'affichage :

Je doute que MacSOUP ait été mis à jour après 2012, ni même après 2007.

> <https://lutim.lagout.org/bN2SHGTr/kRkIu2Jl.jpg>
> alors que le champ brut apparaît ainsi :
> =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=
> Reply-To: mv⁄@free.invalid (=?ISO-8859-1?Q?M=2EV=E9?=)
> =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=

Curieusement, le caractère BARRE DE FRACTION « ⁄ » (U+2044) a remplacé
le caractère « é » (U+00E9). C'est curieux parce que dans la table de
caractères MacRoman il est à la position DA qui correspond non pas au
é mais au Ú dans Latin1.

<http://www.miakinen.net/vrac/charsets/?hv=h&o6=MacRoman&or=6&pr=218>

> Dans MacCafé en effet, le champ brut apparaît ainsi :
> =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=
> Reply-To: mvé@free.invalid (=?ISO-8859-1?Q?M=2EV=E9?=)
> =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=
> alors que l'affichage cette fois n'est pas correct :
> <https://lutim.lagout.org/cmwRJyf9/QBCPfUPm.jpg>

Tu as un MID ?


--
Olivier Miakinen

Olivier Miakinen

unread,
Jan 18, 2024, 6:11:30 AM1/18/24
to
Le 18/01/2024 12:03, Olivier Miakinen a écrit :
>
>> Dans MacCafé en effet, le champ brut apparaît ainsi :
>> =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=
>> Reply-To: mvé@free.invalid (=?ISO-8859-1?Q?M=2EV=E9?=)
>> =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=
>> alors que l'affichage cette fois n'est pas correct :
>> <https://lutim.lagout.org/cmwRJyf9/QBCPfUPm.jpg>
>
> Tu as un MID ?

Je viens de trouver ceci :

(lu en UTF-8)
Newsgroups: fr.test
Subject: Encodage reply-to
Reply-To: mv�@free.invalid (=?ISO-8859-1?Q?M=2EV=E9?=)
User-Agent: MacSOUP/F-2.8.5 (Mac OS 10.14.6)
Message-ID: <65a8f1e1$0$29763$426a...@news.free.fr>

(lu en Latin1)
Reply-To: mvŽ@free.invalid (=?ISO-8859-1?Q?M=2EV=E9?=)


Le caractère inséré par M.V. est en effet un é en MacRoman mais un Ž en
Latin1, de toute façon ça n'a aucune chance d'être interprété de façon
standard puisque ce n'est pas de l'UTF-8.

--
Olivier Miakinen

Olivier Miakinen

unread,
Jan 19, 2024, 2:44:08 AM1/19/24
to
Le 18/01/2024 14:21, M.V. a écrit :
>
>>> Dans MacSOUP, c'est correct à l'affichage :
>>
>> Je doute que MacSOUP ait été mis à jour après 2012, ni même après 2007.
>
> Tu te doutes mal ! ;-)
> Dernière MàJ de MacSOUP : août 2016.

En effet je ne m'en doutais pas. Quoi qu'il en soit, même en 2016 MacSOUP n'a
pas commencé à passer à UTF-8 comme charset d'entêtes non encodés en MIME.


--
Olivier Miakinen

Gilbert OLIVIER

unread,
Jan 19, 2024, 3:13:25 AM1/19/24
to
Je ne suis pas sûr, mais je pense que cette mise à jour est juste la
suppression de la limitation pour les versions non enregistrées, Stefan
Haller ayant mis fin à ce projet.


--
Gilbert
<https://maccafe.fr>
Liens vers une liste de serveurs gratuits conseillés pour les groupes fr et de
lecteurs de nouvelles sur la page <https://maccafe.fr/serveurs.html>

Doug713705

unread,
Jan 21, 2024, 3:03:39 AM1/21/24
to
Salut,

Je réponds ici car cela m'évitera de vous répondre à tous
individuellement.

Merci à tous d'avoir raffraichi ma mémoire et/ou de m'avoir donner des
pistes avec Python.

J'avais dans l'idée de coder une petit app qui aurait pu me donner
envie d'utiliser à nouveau Usenet mais finalement ce que j'y ai lu ces
derniers jours, pas dans ce fil qui est resté parfaitement courtois, mais
dans d'autres groupes, m'a trop rappelé les raisons pour lesquelles je
préfère rester loin d'Usenet d'une manière générale et de la toxicité d'
Usenet-fr en particulier.

Encore merci pour votre aide.

Thierry Pinelli

unread,
Jan 21, 2024, 6:17:52 AM1/21/24
to
Le 21/01/2024 à 09:03, Doug713705 a écrit :
> Salut,
>
> Je réponds ici car cela m'évitera de vous répondre à tous
> individuellement.

cette assertion justifie l'existence des Newsgroups et autres
mailing-lists. tu écris à un "robot" et tous les abonnés du robot te lisent

IMHO tu n'as rien compris

> J'avais dans l'idée de coder une petit app qui aurait pu me donner
> envie d'utiliser à nouveau Usenet mais finalement ce que j'y ai lu ces
> derniers jours, pas dans ce fil qui est resté parfaitement courtois, mais
> dans d'autres groupes, m'a trop rappelé les raisons pour lesquelles je
> préfère rester loin d'Usenet d'une manière générale et de la toxicité d'
> Usenet-fr en particulier.

ce sont les gens qui sont toxiques, pas Usenet-Fr



Doug713705

unread,
Jan 21, 2024, 2:49:03 PM1/21/24
to
Le 21-01-2024, Thierry Pinelli <festive...@gmail.com> a écrit :
> Le 21/01/2024 à 09:03, Doug713705 a écrit :
>> Salut,
>>
>> Je réponds ici car cela m'évitera de vous répondre à tous
>> individuellement.
>
> cette assertion justifie l'existence des Newsgroups et autres
> mailing-lists. tu écris à un "robot" et tous les abonnés du robot te lisent
>
> IMHO tu n'as rien compris

Parfaite illustration de mon propos...

>> J'avais dans l'idée de coder une petit app qui aurait pu me donner
>> envie d'utiliser à nouveau Usenet mais finalement ce que j'y ai lu ces
>> derniers jours, pas dans ce fil qui est resté parfaitement courtois, mais
>> dans d'autres groupes, m'a trop rappelé les raisons pour lesquelles je
>> préfère rester loin d'Usenet d'une manière générale et de la toxicité d'
>> Usenet-fr en particulier.
>
> ce sont les gens qui sont toxiques, pas Usenet-Fr

CQFD.
Goodbye Usenet.

yves

unread,
Jan 21, 2024, 3:31:07 PM1/21/24
to
Le Sun, 21 Jan 2024 08:03:38 -0000 (UTC), Doug713705 a écrit:

Bonjour,
Avec slrn, tu devrais pouvoir déjà filtrer assez efficacement, non ?

J'avais initié il y a quelques mois un fil "débuter avec gnus", gnus
dont je me sers pour lire et/ou parcourir la hiérarchie fr., et c'est
plutôt efficace.

@+
--
Yves

Thierry Pinelli

unread,
Jan 21, 2024, 7:22:16 PM1/21/24
to
Le 21/01/2024 à 21:31, yves a écrit :

> Avec slrn, tu devrais pouvoir déjà filtrer assez efficacement, non ?
>
> J'avais initié il y a quelques mois un fil "débuter avec gnus", gnus
> dont je me sers pour lire et/ou parcourir la hiérarchie fr., et c'est
> plutôt efficace.

User-Agent: Pan/0.149 (Bellevue; 4c157ba)

et Pan dans la gueule !!!!!

MDR


Thierry Pinelli

unread,
Jan 22, 2024, 4:02:54 PM1/22/24
to
Le 22/01/2024 à 09:31, M.V. a écrit :
> Bonjour,
>
> Dans le message <uokcfm$du2p$2...@dont-email.me>, Thierry Pinelli a écrit
> le 22 janvier 2024 à 01 h 22 :
>
>>> gnus dont je me sers pour lire et/ou parcourir la hiérarchie fr., et
>>> c'est plutôt efficace.
>>
>> User-Agent: Pan/0.149 (Bellevue; 4c157ba)
>
> Oui et ?
> Le monsieur yves il a pas dit « je me sers de gnus pour écrire sur
> usenet ».

on s'en branle, c'est un bouffon


yves

unread,
Jan 23, 2024, 6:04:09 AM1/23/24
to
Le Mon, 22 Jan 2024 08:31:27 -0000 (UTC), M.V. a écrit:

> Bonjour,

> Dans le message <uokcfm$du2p$2...@dont-email.me>, Thierry Pinelli a écrit
> le 22 janvier 2024 à 01 h 22 :

>>> gnus dont je me sers pour lire et/ou parcourir la hiérarchie fr., et
>>> c'est plutôt efficace.

>> User-Agent: Pan/0.149 (Bellevue; 4c157ba)

> Oui et ? Le monsieur yves il a pas dit « je me sers de gnus pour
> écrire sur usenet ».


Oui, à mon avis il existe quelques bonnes raisons d'utiliser GNUS
comme browser de groupes usenet en lecture seule.

Par exemple, séquence de touches pour scorer un blaireau quelconque à
-1000 sur tous les groupes, sur mon ordi :

Alt-i a L a e p ENTER

Ok, c'est un peu long, on doit pouvoir simplifier ça, mais si je m'y
attelle, ça va être un prétexte pour remettre à plus tard des choses
plus prioritaires.


@+
--
Yves

Thierry Pinelli

unread,
Jan 23, 2024, 2:59:47 PM1/23/24
to
manifestement tu t'attelles à :

User-Agent: Pan/0.149 (Bellevue; 4c157ba)



Olivier Miakinen

unread,
Jan 23, 2024, 5:24:08 PM1/23/24
to
Bonjour Thierry,

Je crois utile de dissiper un malentendu avant que la discussion ne
s'envenime.

Le 23/01/2024 20:59, Thierry Pinelli répondait à yves :
>>
>>>>> gnus dont je me sers pour lire et/ou parcourir la hiérarchie fr., et
>>>>> c'est plutôt efficace.
>>
>>>> User-Agent: Pan/0.149 (Bellevue; 4c157ba)
>>
>>> Oui et ? Le monsieur yves il a pas dit « je me sers de gnus pour
>>> écrire sur usenet ».
>>
>> [...]
>
> manifestement tu t'attelles à :
>
> User-Agent: Pan/0.149 (Bellevue; 4c157ba)

Le malentendu, c'est quelque chose qu'Yves a déjà expliqué dans ce groupe
il y a quelques semaines mais que tu n'as sans doute pas lu, à savoir qu'il
utilise simultanément deux logiciels de nouvelles :
− Gnus *en lecture* pour plusieurs raisons d'ergonomie ;
− Pan *en écriture* parce qu'il n'a pas réussi à configurer Gnus comme
il le souhaitait.

Il n'y a donc aucune contradiction lorsqu'il écrit *avec Pan* qu'il lit
les news *avec Gnus*.

En espérant avoir empêché que cela dégénère en polémique stérile, je fais
suivre vers la poublelle puisqu'il n'y a plus rien à répondre.

--
Olivier Miakinen
0 new messages