Fonctions pour g=c3=a9rer des ent=c3=aates foireux (non-ASCII) en lecture
10 réponses
Olivier Miakinen
Bonjour,
Les entêtes d'un message de courriel (e-mail) ou d'un article usenet
sont censés être en US-ASCII seul, quitte à ce qu'ils soient transformés
en ASCII par un encodage MIME selon le RFC 2047.
Mais il arrive que des logiciels mal configurés envoient des caractères
8-bits dans les entêtes, ce qui pose un problème parce qu'on ne peut
jamais savoir avec certitude dans quel charset on est censé les lire.
Pour les développeurs de logiciels devant recevoir et traiter de tels
messages et en faire quelque chose qui ne fiche pas la pagaille, je
propose trois fonctions, selon le degré de gentillesse qu'on veut
accorder à ces entêtes foireux. Dans chacune, je teste d'abord si
c'est de l'UTF-8 avant de me rabattre sur le CP1252 qui est le Latin1
de Windows (inclut tous les caractères de ISO-8859-1, plus quelques
autres).
Function want_translit() to transliterate non ASCII:
Dom Feranpiere(C)(R) EUR=EUR oe=oe OE=OE (utf8)
Dom Feranpiere(C)(R) EUR=? oe= 1/2 OE= 1/4 (latin9)
Dom Feranpiere(C)(R) EUR=EUR oe=oe OE=OE (cp1252)
Function want_ignore() to ignore non ASCII:
Dom Franpire EUR= oe= OE= (utf8)
Dom Franpire EUR= oe= OE= (latin9)
Dom Franpire EUR= oe= OE= (cp1252)
=============================================================================
Je viens juste de comprendre pourquoi iconv rajoute des espaces autour de « 1/2 » et « 1/4 » lors de la translittération de ½ et ¼ : c'est pour éviter qu'une valeur telle que « 1½ » devienne « 11/2 ». ;-) -- Olivier Miakinen
Je viens juste de comprendre pourquoi iconv rajoute des espaces autour
de « 1/2 » et « 1/4 » lors de la translittération de ½ et ¼ : c'est
pour éviter qu'une valeur telle que « 1½ » devienne « 11/2 ». ;-)
Je viens juste de comprendre pourquoi iconv rajoute des espaces autour de « 1/2 » et « 1/4 » lors de la translittération de ½ et ¼ : c'est pour éviter qu'une valeur telle que « 1½ » devienne « 11/2 ». ;-) -- Olivier Miakinen
yamo'
Olivier Miakinen a écrit :
Bonjour, Les entêtes d'un message de courriel (e-mail) ou d'un article usenet sont censés être en US-ASCII seul, quitte à ce qu'ils soient transformés en ASCII par un encodage MIME selon le RFC 2047. Mais il arrive que des logiciels mal configurés envoient des caractères 8-bits dans les entêtes, ce qui pose un problème parce qu'on ne peut jamais savoir avec certitude dans quel charset on est censé les lire. Pour les développeurs de logiciels devant recevoir et traiter de tels messages et en faire quelque chose qui ne fiche pas la pagaille, je propose trois fonctions, selon le degré de gentillesse qu'on veut accorder à ces entêtes foireux. Dans chacune, je teste d'abord si c'est de l'UTF-8 avant de me rabattre sur le CP1252 qui est le Latin1 de Windows (inclut tous les caractères de ISO-8859-1, plus quelques autres).
J'ai adapté ton code en enlevant le printf, je ne sais pas si j'ai bien fait mais au moins en répondant à , je n'ai plus un message vide. <https://gitlab.com/yamo-nntp/newsportal/-/blob/master/newsportal.php>
Olivier Miakinen a écrit :
Bonjour,
Les entêtes d'un message de courriel (e-mail) ou d'un article usenet
sont censés être en US-ASCII seul, quitte à ce qu'ils soient transformés
en ASCII par un encodage MIME selon le RFC 2047.
Mais il arrive que des logiciels mal configurés envoient des caractères
8-bits dans les entêtes, ce qui pose un problème parce qu'on ne peut
jamais savoir avec certitude dans quel charset on est censé les lire.
Pour les développeurs de logiciels devant recevoir et traiter de tels
messages et en faire quelque chose qui ne fiche pas la pagaille, je
propose trois fonctions, selon le degré de gentillesse qu'on veut
accorder à ces entêtes foireux. Dans chacune, je teste d'abord si
c'est de l'UTF-8 avant de me rabattre sur le CP1252 qui est le Latin1
de Windows (inclut tous les caractères de ISO-8859-1, plus quelques
autres).
J'ai adapté ton code en enlevant le printf, je ne sais pas si j'ai bien
fait mais au moins en répondant à
<MPG.39c9abe9e9cf3e299896b7@news.galacsys.net>, je n'ai plus un message
vide.
<https://gitlab.com/yamo-nntp/newsportal/-/blob/master/newsportal.php>
Bonjour, Les entêtes d'un message de courriel (e-mail) ou d'un article usenet sont censés être en US-ASCII seul, quitte à ce qu'ils soient transformés en ASCII par un encodage MIME selon le RFC 2047. Mais il arrive que des logiciels mal configurés envoient des caractères 8-bits dans les entêtes, ce qui pose un problème parce qu'on ne peut jamais savoir avec certitude dans quel charset on est censé les lire. Pour les développeurs de logiciels devant recevoir et traiter de tels messages et en faire quelque chose qui ne fiche pas la pagaille, je propose trois fonctions, selon le degré de gentillesse qu'on veut accorder à ces entêtes foireux. Dans chacune, je teste d'abord si c'est de l'UTF-8 avant de me rabattre sur le CP1252 qui est le Latin1 de Windows (inclut tous les caractères de ISO-8859-1, plus quelques autres).
J'ai adapté ton code en enlevant le printf, je ne sais pas si j'ai bien fait mais au moins en répondant à , je n'ai plus un message vide. <https://gitlab.com/yamo-nntp/newsportal/-/blob/master/newsportal.php>
Olivier Miakinen
Le 21/10/2020 18:16, yamo' a écrit :
J'ai adapté ton code en enlevant le printf, je ne sais pas si j'ai bien fait mais au moins en répondant à , je n'ai plus un message vide.
J'ai adapté ton code en enlevant le printf, je ne sais pas si j'ai bien
fait mais au moins en répondant à
<MPG.39c9abe9e9cf3e299896b7@news.galacsys.net>, je n'ai plus un message
vide.
J'ai je pense mis au bon endroit ton code : https://gitlab.com/yamo-nntp/newsportal/-/blob/master/newsportal.php lignes 509 à 512. Et, pour les antislash manquants, je vois qu'il y a plusieurs fois la fonction stripslashes. Je regarde ce qu'il se passe en l'enlevant... https://www.php.net/manual/fr/function.stripslashes.php -- Stéphane
Olivier Miakinen a écrit :
Le 21/10/2020 18:16, yamo' a écrit :
J'ai adapté ton code en enlevant le printf, je ne sais pas si j'ai bien
fait mais au moins en répondant à
<MPG.39c9abe9e9cf3e299896b7@news.galacsys.net>, je n'ai plus un message
vide.
J'ai je pense mis au bon endroit ton code :
https://gitlab.com/yamo-nntp/newsportal/-/blob/master/newsportal.php
lignes 509 à 512.
Et, pour les antislash manquants, je vois qu'il y a plusieurs fois la
fonction stripslashes.
Je regarde ce qu'il se passe en l'enlevant...
https://www.php.net/manual/fr/function.stripslashes.php
J'ai je pense mis au bon endroit ton code : https://gitlab.com/yamo-nntp/newsportal/-/blob/master/newsportal.php lignes 509 à 512. Et, pour les antislash manquants, je vois qu'il y a plusieurs fois la fonction stripslashes. Je regarde ce qu'il se passe en l'enlevant... https://www.php.net/manual/fr/function.stripslashes.php -- Stéphane
yamo'
yamo' a écrit :
Olivier Miakinen a écrit :
Le 21/10/2020 18:16, yamo' a écrit :
J'ai adapté ton code en enlevant le printf, je ne sais pas si j'ai bien fait mais au moins en répondant à , je n'ai plus un message vide.
J'ai je pense mis au bon endroit ton code : https://gitlab.com/yamo-nntp/newsportal/-/blob/master/newsportal.php lignes 509 à 512. Et, pour les antislash manquants, je vois qu'il y a plusieurs fois la fonction stripslashes. Je regarde ce qu'il se passe en l'enlevant... https://www.php.net/manual/fr/function.stripslashes.php
J'en ai laissé quelques uns. ???? Maintenant on peut écrire CRLF rn J'ai mis à jour : http://news2web.pasdenom.info -- Stéphane Le génie est fait d'un dixième d'inspiration... et de neuf dixième de transpiration. -+- Thomas Edison (1847-1931) -+-
yamo' a écrit :
Olivier Miakinen a écrit :
Le 21/10/2020 18:16, yamo' a écrit :
J'ai adapté ton code en enlevant le printf, je ne sais pas si j'ai bien
fait mais au moins en répondant à
<MPG.39c9abe9e9cf3e299896b7@news.galacsys.net>, je n'ai plus un message
vide.
J'ai je pense mis au bon endroit ton code :
https://gitlab.com/yamo-nntp/newsportal/-/blob/master/newsportal.php
lignes 509 à 512.
Et, pour les antislash manquants, je vois qu'il y a plusieurs fois la
fonction stripslashes.
Je regarde ce qu'il se passe en l'enlevant...
https://www.php.net/manual/fr/function.stripslashes.php
J'en ai laissé quelques uns. ????
Maintenant on peut écrire CRLF rn
J'ai mis à jour :
http://news2web.pasdenom.info
--
Stéphane
Le génie est fait d'un dixième d'inspiration... et de neuf dixième de
transpiration.
-+- Thomas Edison (1847-1931) -+-
J'ai je pense mis au bon endroit ton code : https://gitlab.com/yamo-nntp/newsportal/-/blob/master/newsportal.php lignes 509 à 512. Et, pour les antislash manquants, je vois qu'il y a plusieurs fois la fonction stripslashes. Je regarde ce qu'il se passe en l'enlevant... https://www.php.net/manual/fr/function.stripslashes.php
J'en ai laissé quelques uns. ???? Maintenant on peut écrire CRLF rn J'ai mis à jour : http://news2web.pasdenom.info -- Stéphane Le génie est fait d'un dixième d'inspiration... et de neuf dixième de transpiration. -+- Thomas Edison (1847-1931) -+-
yamo'
Olivier Miakinen a écrit :
Le 21/10/2020 18:16, yamo' a écrit :
J'ai adapté ton code en enlevant le printf, je ne sais pas si j'ai bien fait mais au moins en répondant à , je n'ai plus un message vide.
Un autre exemple : Message-ID: <http://al.howardknight.net/?ID0338413700> <http://news2web.pasdenom.info/article.php?id82174&group=fr.soc.politique#1582174> (la version actuelle protégée par mot de passe ne fait pas mieux) Nemo a aussi du mal mais affiche quelque chose : <http://news2.nemoweb.net/?DataID= Seamonkey, je ne sais pas ; je ne suis pas abonné à ce groupe. Pan l'affiche correctement. -- Stéphane
Olivier Miakinen a écrit :
Le 21/10/2020 18:16, yamo' a écrit :
J'ai adapté ton code en enlevant le printf, je ne sais pas si j'ai bien
fait mais au moins en répondant à
<MPG.39c9abe9e9cf3e299896b7@news.galacsys.net>, je n'ai plus un message
vide.
Un autre exemple :
Message-ID: <hvc1i4FpovuU1@mid.individual.net>
<http://al.howardknight.net/?ID0338413700>
<http://news2web.pasdenom.info/article.php?id82174&group=fr.soc.politique#1582174> (la version actuelle protégée par mot de passe ne fait pas mieux)
Nemo a aussi du mal mais affiche quelque chose :
<http://news2.nemoweb.net/?DataID=hvc1i4FpovuU1@mid.individual.net>
Seamonkey, je ne sais pas ; je ne suis pas abonné à ce groupe.
Pan l'affiche correctement.
Un autre exemple : Message-ID: <http://al.howardknight.net/?ID0338413700> <http://news2web.pasdenom.info/article.php?id82174&group=fr.soc.politique#1582174> (la version actuelle protégée par mot de passe ne fait pas mieux) Nemo a aussi du mal mais affiche quelque chose : <http://news2.nemoweb.net/?DataID= Seamonkey, je ne sais pas ; je ne suis pas abonné à ce groupe. Pan l'affiche correctement. -- Stéphane
Olivier Miakinen
Le 22/10/2020 à 18:34, yamo' a écrit :
Un autre exemple : Message-ID: <http://al.howardknight.net/?ID0338413700> <http://news2web.pasdenom.info/article.php?id82174&group=fr.soc.politique#1582174> (la version actuelle protégée par mot de passe ne fait pas mieux) Nemo a aussi du mal mais affiche quelque chose : <http://news2.nemoweb.net/?DataID=
Très intéressant ! Je recopie le Subject (sous forme de citation pour qu'il ne soit pas coupé) :
Eh bien il va falloir faire un rapport de bug à MesNews/1.08.06.00 ! Ce qu'il ne respecte pas, c'est ceci : <https://tools.ietf.org/html/rfc2047#section-5> § Each 'encoded-word' MUST represent an integral number of characters. A multi-octet character may not be split across adjacent 'encoded- word's. § Soit dit en passant, tous les logiciels que tu as testés sont incorrects car ils devraient afficher les 'encoded-word's non décodés du fait que ceux-ci sont incorrects.
Seamonkey, je ne sais pas ; je ne suis pas abonné à ce groupe.
Moi non plus. Du coup, il va falloir demander à quelqu'un ayant un MesNews de faire l'essai sur fr.test avec ce titre, à savoir (sans les guillemets) : « Toutes les élections présidentielles nord-américaines depuis la guerre d’Irak ont présenté des candidats qui l’ont soutenue »
Le 22/10/2020 à 18:34, yamo' a écrit :
Un autre exemple :
Message-ID: <hvc1i4FpovuU1@mid.individual.net>
<http://al.howardknight.net/?ID0338413700>
<http://news2web.pasdenom.info/article.php?id82174&group=fr.soc.politique#1582174> (la version actuelle protégée par mot de passe ne fait pas mieux)
Nemo a aussi du mal mais affiche quelque chose :
<http://news2.nemoweb.net/?DataID=hvc1i4FpovuU1@mid.individual.net>
Très intéressant ! Je recopie le Subject (sous forme de citation pour
qu'il ne soit pas coupé) :
Eh bien il va falloir faire un rapport de bug à MesNews/1.08.06.00 !
Ce qu'il ne respecte pas, c'est ceci :
<https://tools.ietf.org/html/rfc2047#section-5>
§
Each 'encoded-word' MUST represent an integral number of characters.
A multi-octet character may not be split across adjacent 'encoded-
word's.
§
Soit dit en passant, tous les logiciels que tu as testés sont incorrects
car ils devraient afficher les 'encoded-word's non décodés du fait que
ceux-ci sont incorrects.
Seamonkey, je ne sais pas ; je ne suis pas abonné à ce groupe.
Moi non plus.
Du coup, il va falloir demander à quelqu'un ayant un MesNews de faire
l'essai sur fr.test avec ce titre, à savoir (sans les guillemets) :
« Toutes les élections présidentielles nord-américaines depuis la guerre
d’Irak ont présenté des candidats qui l’ont soutenue »
Un autre exemple : Message-ID: <http://al.howardknight.net/?ID0338413700> <http://news2web.pasdenom.info/article.php?id82174&group=fr.soc.politique#1582174> (la version actuelle protégée par mot de passe ne fait pas mieux) Nemo a aussi du mal mais affiche quelque chose : <http://news2.nemoweb.net/?DataID=
Très intéressant ! Je recopie le Subject (sous forme de citation pour qu'il ne soit pas coupé) :
Eh bien il va falloir faire un rapport de bug à MesNews/1.08.06.00 ! Ce qu'il ne respecte pas, c'est ceci : <https://tools.ietf.org/html/rfc2047#section-5> § Each 'encoded-word' MUST represent an integral number of characters. A multi-octet character may not be split across adjacent 'encoded- word's. § Soit dit en passant, tous les logiciels que tu as testés sont incorrects car ils devraient afficher les 'encoded-word's non décodés du fait que ceux-ci sont incorrects.
Seamonkey, je ne sais pas ; je ne suis pas abonné à ce groupe.
Moi non plus. Du coup, il va falloir demander à quelqu'un ayant un MesNews de faire l'essai sur fr.test avec ce titre, à savoir (sans les guillemets) : « Toutes les élections présidentielles nord-américaines depuis la guerre d’Irak ont présenté des candidats qui l’ont soutenue »
DV
Olivier Miakinen a écrit ceci :
Du coup, il va falloir demander à quelqu'un ayant un MesNews de faire l'essai sur fr.test avec ce titre, à savoir (sans les guillemets) : « Toutes les élections présidentielles nord-américaines depuis la guerre d’Irak ont présenté des candidats qui l’ont soutenue »
Ceci fera-t-il l'affaire ? <news: -- Denis
Olivier Miakinen a écrit ceci :
Du coup, il va falloir demander à quelqu'un ayant un MesNews de faire
l'essai sur fr.test avec ce titre, à savoir (sans les guillemets) :
« Toutes les élections présidentielles nord-américaines depuis la guerre
d’Irak ont présenté des candidats qui l’ont soutenue »
Du coup, il va falloir demander à quelqu'un ayant un MesNews de faire l'essai sur fr.test avec ce titre, à savoir (sans les guillemets) : « Toutes les élections présidentielles nord-américaines depuis la guerre d’Irak ont présenté des candidats qui l’ont soutenue »
Ceci fera-t-il l'affaire ? <news: -- Denis
yamo'
DV a tapoté le 22/10/2020 19:43:
Olivier Miakinen a écrit ceci :
Du coup, il va falloir demander à quelqu'un ayant un MesNews de faire l'essai sur fr.test avec ce titre, à savoir (sans les guillemets) : « Toutes les élections présidentielles nord-américaines depuis la guerre d’Irak ont présenté des candidats qui l’ont soutenue »
Ceci fera-t-il l'affaire ? <news:
Il manque la deuxième ligne mais ça coince déjà dans la réponse. Il me semble avoir un MN quelque part... -- Stéphane
DV a tapoté le 22/10/2020 19:43:
Olivier Miakinen a écrit ceci :
Du coup, il va falloir demander à quelqu'un ayant un MesNews de faire
l'essai sur fr.test avec ce titre, à savoir (sans les guillemets) :
« Toutes les élections présidentielles nord-américaines depuis la guerre
d’Irak ont présenté des candidats qui l’ont soutenue »
Ceci fera-t-il l'affaire ?
<news:mn.b49d7e4a5c72bc3c.140801@yakakwatik.org>
Il manque la deuxième ligne mais ça coince déjà dans la réponse.
Il me semble avoir un MN quelque part...
--
Stéphane
Du coup, il va falloir demander à quelqu'un ayant un MesNews de faire l'essai sur fr.test avec ce titre, à savoir (sans les guillemets) : « Toutes les élections présidentielles nord-américaines depuis la guerre d’Irak ont présenté des candidats qui l’ont soutenue »
Ceci fera-t-il l'affaire ? <news:
Il manque la deuxième ligne mais ça coince déjà dans la réponse. Il me semble avoir un MN quelque part... -- Stéphane
yamo'
yamo' a écrit :
DV a tapoté le 22/10/2020 19:43:
Olivier Miakinen a écrit ceci :
Du coup, il va falloir demander à quelqu'un ayant un MesNews de faire l'essai sur fr.test avec ce titre, à savoir (sans les guillemets) : « Toutes les élections présidentielles nord-américaines depuis la guerre d’Irak ont présenté des candidats qui l’ont soutenue »
Ceci fera-t-il l'affaire ? <news:
Il manque la deuxième ligne mais ça coince déjà dans la réponse.
J'ai trouvé un deuxième bug qui lui est mineur. S'il y a un espace au début du sujet NewsPortal, classe le message comme une réponse. <rmsjas$3u7$ <http://news2web.pasdenom.info/article.php?id0471&group=fr.test#30471> Mais le sujet est ok! J'ai copié le texte entre les guillemets espaces compris. -- Stéphane
yamo' a écrit :
DV a tapoté le 22/10/2020 19:43:
Olivier Miakinen a écrit ceci :
Du coup, il va falloir demander à quelqu'un ayant un MesNews de faire
l'essai sur fr.test avec ce titre, à savoir (sans les guillemets) :
« Toutes les élections présidentielles nord-américaines depuis la guerre
d’Irak ont présenté des candidats qui l’ont soutenue »
Ceci fera-t-il l'affaire ?
<news:mn.b49d7e4a5c72bc3c.140801@yakakwatik.org>
Il manque la deuxième ligne mais ça coince déjà dans la réponse.
J'ai trouvé un deuxième bug qui lui est mineur.
S'il y a un espace au début du sujet NewsPortal, classe le message comme
une réponse.
<rmsjas$3u7$1@pasdenom.info> <http://news2web.pasdenom.info/article.php?id0471&group=fr.test#30471> Mais le sujet est ok!
J'ai copié le texte entre les guillemets espaces compris.
Du coup, il va falloir demander à quelqu'un ayant un MesNews de faire l'essai sur fr.test avec ce titre, à savoir (sans les guillemets) : « Toutes les élections présidentielles nord-américaines depuis la guerre d’Irak ont présenté des candidats qui l’ont soutenue »
Ceci fera-t-il l'affaire ? <news:
Il manque la deuxième ligne mais ça coince déjà dans la réponse.
J'ai trouvé un deuxième bug qui lui est mineur. S'il y a un espace au début du sujet NewsPortal, classe le message comme une réponse. <rmsjas$3u7$ <http://news2web.pasdenom.info/article.php?id0471&group=fr.test#30471> Mais le sujet est ok! J'ai copié le texte entre les guillemets espaces compris. -- Stéphane