[R] Gmail Notifier et compatibilité multi langue (utf-8)
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
-
pierrotm777
- Membre émérite

- Messages : 770
- Enregistré le : sam. 11 oct. 2008 14:44
- Localisation : Bordeaux
- Status : Hors ligne
[R] Gmail Notifier et compatibilité multi langue (utf-8)
Bonjour à tous,
Je suis sur un nouveau projet, un notificateur de mails dans Gmail.
J'ai trouvé un UDF sur le site Us (Gmail checker) qui fonctionne à merveille.
Mon seul problème, c'est la compatibilité avec les langues comportant certains caractères.
Les é ou è passent bien mai les ' sont remplacés par ' ce qui n'est pas bien lisible.
Pourriez vous m'aider à rendre compatible cet UDF (GMAIL.au3) multilangue ?
Merci par avance.
Je joins l'UDF et un petit exemple.
Pour mieux comprendre,si vous avez un compte gmail, envoyez vous un mail avec dans le titre ou le corps du message:
c'est un premier essai .
Complétez dans l'exemple vos login et password et lancez le script.
Vous devriez obtenir dans le message de l'exemple:
c'est un premier essai
Je suis sur un nouveau projet, un notificateur de mails dans Gmail.
J'ai trouvé un UDF sur le site Us (Gmail checker) qui fonctionne à merveille.
Mon seul problème, c'est la compatibilité avec les langues comportant certains caractères.
Les é ou è passent bien mai les ' sont remplacés par ' ce qui n'est pas bien lisible.
Pourriez vous m'aider à rendre compatible cet UDF (GMAIL.au3) multilangue ?
Merci par avance.
Je joins l'UDF et un petit exemple.
Pour mieux comprendre,si vous avez un compte gmail, envoyez vous un mail avec dans le titre ou le corps du message:
c'est un premier essai .
Complétez dans l'exemple vos login et password et lancez le script.
Vous devriez obtenir dans le message de l'exemple:
c'est un premier essai
- Fichiers joints
-
- GmailNotifier.zip
- (1.96 Kio) Téléchargé 106 fois
Modifié en dernier par pierrotm777 le sam. 08 mai 2010 19:03, modifié 2 fois.
- jchd
- AutoIt MVPs (MVP)

- Messages : 2284
- Enregistré le : lun. 30 mars 2009 22:57
- Localisation : Sud-Ouest de la France (43.622788,-1.260864)
- Status : Hors ligne
Re: [..] Gmail Notifier at compatibilité multi langue (utf-8)
Il suffit d'interpréter correctement l'encodage html.
Attention, il y a aussi les & (perluette & elle-même) et autres.
Code : Tout sélectionner
Local $s = 'Unicode html string with some fractional ((2n+1)/8) html codepoints ⅛=1/8 ⅜=3/8 ⅝=5/8 ⅞=7/8'
$s = Execute('"' & StringRegexpReplace($s, "&#(\d+);", '"&chrw($1)&"') & '"')
MsgBox(0, "Html Unicode test", $s & @LF)
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
-
pierrotm777
- Membre émérite

- Messages : 770
- Enregistré le : sam. 11 oct. 2008 14:44
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Gmail Notifier at compatibilité multi langue (utf-8)
Merci de votre intérêt pour mon problème.
où dis-je placer ce code svp et comment l'utiliser.
Si je comprend bien , ce code ne résoudrait que le problème avec le ' ?
Après quelques recherches, j'ai trouvé plusieurs fonctions.http://www.autoitscript.com/forum/index ... hl=chinese
Celles ci peuvent-elles m'aider.
Merci
où dis-je placer ce code svp et comment l'utiliser.
Si je comprend bien , ce code ne résoudrait que le problème avec le ' ?
Après quelques recherches, j'ai trouvé plusieurs fonctions.http://www.autoitscript.com/forum/index ... hl=chinese
Celles ci peuvent-elles m'aider.
Merci
► Afficher le texte
- jchd
- AutoIt MVPs (MVP)

- Messages : 2284
- Enregistré le : lun. 30 mars 2009 22:57
- Localisation : Sud-Ouest de la France (43.622788,-1.260864)
- Status : Hors ligne
Re: [..] Gmail Notifier at compatibilité multi langue (utf-8)
L'explication est la suivante : html autorise la représentation de tous les caractères Unicode sous une forme portable (comprendre "propriétaire") en encodant la valeur Unicode décimale précédée de &# et suivie de ;
Pour une apostrophe, code hexa 0x27, soit 39 en décimal, cela donne '
Il suffit d'employer une expression régulière (RegExp) pour extraire et remplacer la chose par & ChrW(39) & (concaténé au beau milieu de la chaîne initiale) et d'exécuter le tout.
Partant de "C'est le pied !", on arrive à Execute("C" & ChrW(39) & "est le pied !") et donc à "C'est le pied !"
Maintenant, mon exemple démontre qu'il ne fonctionne pas qu'avec la perluette (il suffirait de l'exécuter pour s'en rendre compte...), mais avec l'intégralité du jeu de charactères Unicode qu'AutoIt peut traiter.
Un mot à ce sujet : AutoIt est censé utiliser Unicode (UTF-16LE) mais en réalité, il n'en est rien : il ne gère actuellement que UCS-2, c'est à dire, grosso modo, que le plan 0 du jeu Unicode, (les caractères Unicode représentables par un seul mot de 16 bits, sans "surrogates"). J'avance petit à petit mes pions pour qu'il passe à un véritable UTF-16LE, mais cela ne se fera pas en un jour, donc que personne ne retienne sa respiration avant de pouvoir traiter l'ensemble des symboles musicaux byzantins avec AutoIt...
Où placer ce bête StringRegExpReplace ? Et bien après réception de la chaîne html et avant traitement ultérieur, pardi !
Oublie les transcodages de/vers UTF8, ils n'ont absolument rien à voir là-dedans.
Edit: argh, j'ai doublonné (cité au lieu d'éditer), mille excuses.
Dernier point : Unicode n'a rien à voir avec les langues !
Pour une apostrophe, code hexa 0x27, soit 39 en décimal, cela donne '
Il suffit d'employer une expression régulière (RegExp) pour extraire et remplacer la chose par & ChrW(39) & (concaténé au beau milieu de la chaîne initiale) et d'exécuter le tout.
Partant de "C'est le pied !", on arrive à Execute("C" & ChrW(39) & "est le pied !") et donc à "C'est le pied !"
Maintenant, mon exemple démontre qu'il ne fonctionne pas qu'avec la perluette (il suffirait de l'exécuter pour s'en rendre compte...), mais avec l'intégralité du jeu de charactères Unicode qu'AutoIt peut traiter.
Un mot à ce sujet : AutoIt est censé utiliser Unicode (UTF-16LE) mais en réalité, il n'en est rien : il ne gère actuellement que UCS-2, c'est à dire, grosso modo, que le plan 0 du jeu Unicode, (les caractères Unicode représentables par un seul mot de 16 bits, sans "surrogates"). J'avance petit à petit mes pions pour qu'il passe à un véritable UTF-16LE, mais cela ne se fera pas en un jour, donc que personne ne retienne sa respiration avant de pouvoir traiter l'ensemble des symboles musicaux byzantins avec AutoIt...
Où placer ce bête StringRegExpReplace ? Et bien après réception de la chaîne html et avant traitement ultérieur, pardi !
Oublie les transcodages de/vers UTF8, ils n'ont absolument rien à voir là-dedans.
Edit: argh, j'ai doublonné (cité au lieu d'éditer), mille excuses.
Dernier point : Unicode n'a rien à voir avec les langues !
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
-
pierrotm777
- Membre émérite

- Messages : 770
- Enregistré le : sam. 11 oct. 2008 14:44
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Gmail Notifier et compatibilité multi langue (utf-8)
Merci jchd pour cette explication vraiment claire !
Je vous essayer d'adapter à mon code votre solution et reviendrais vers vous pour vous en dire plus !
Je vous essayer d'adapter à mon code votre solution et reviendrais vers vous pour vous en dire plus !
- mimione
- Niveau 4

- Messages : 91
- Enregistré le : mer. 30 avr. 2008 18:11
- Localisation : Bretagne
- Status : Hors ligne
Re: [..] Gmail Notifier et compatibilité multi langue (utf-8)
Bonjour
Très intéressant.
Tant que vous avez les mains dans le cambouis, serait-il possible (avec éventuellement une option) de lister TOUS les messages présents dans la boîte de réception de Gmail, et pas seulement les "non lus"... ?
Bon courage.
Très intéressant.
Tant que vous avez les mains dans le cambouis, serait-il possible (avec éventuellement une option) de lister TOUS les messages présents dans la boîte de réception de Gmail, et pas seulement les "non lus"... ?
Bon courage.
Je ne suis pas toujours de mon avis....
--------------------------------------------
Des malheurs évités le bonheur se compose.
--------------------------------------------
Des malheurs évités le bonheur se compose.
-
pierrotm777
- Membre émérite

- Messages : 770
- Enregistré le : sam. 11 oct. 2008 14:44
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Gmail Notifier et compatibilité multi langue (utf-8)
Pour info, le sujet initial est sur le forum autoit us : http://www.autoitscript.com/forum/index ... pic=111853 , mai ne comporte pas,
enfin je crois la possibilité de lire tous les mails mais juste les non lus.
enfin je crois la possibilité de lire tous les mails mais juste les non lus.
-
pierrotm777
- Membre émérite

- Messages : 770
- Enregistré le : sam. 11 oct. 2008 14:44
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Gmail Notifier et compatibilité multi langue (utf-8)
j'ai essayé cette modif mais ça ne marche pas !
Code : Tout sélectionner
Local $s = 'Unicode html string with some fractional ((2n+1)/8) html codepoints ⅛=1/8 ⅜=3/8 ⅝=5/8 ⅞=7/8'
$s = GetEmailSummary(Execute('"' & StringRegexpReplace($s, "&#(\d+);", '"&chrw($1)&"') & '"'))
MsgBox(0, "Html Unicode test", $s & @LF)- jchd
- AutoIt MVPs (MVP)

- Messages : 2284
- Enregistré le : lun. 30 mars 2009 22:57
- Localisation : Sud-Ouest de la France (43.622788,-1.260864)
- Status : Hors ligne
Re: [..] Gmail Notifier et compatibilité multi langue (utf-8)
Poste un bout de code (court) qui démontre un problème, car comme le dit souvent Thierry, le "ça ne marche pas !" est un peu vague.
Boudiou, je n'avais pas remarqué le GetEmailSummary... késako ce bidule ?
Si, comme son doux nom brichou veut nous le faire croire, cette fonction renvoie une chaîne, c'est ce qu'il faut assigner à $s dans mon exemple.
Peu ou prou.
[private joke]
Donald, y'm'font des trucs pas prévus en MIX !
[/private joke]
Boudiou, je n'avais pas remarqué le GetEmailSummary... késako ce bidule ?
Si, comme son doux nom brichou veut nous le faire croire, cette fonction renvoie une chaîne, c'est ce qu'il faut assigner à $s dans mon exemple.
Code : Tout sélectionner
Local $s = GetEmailSummary(... paramètres que j'ignore ...)
$s = Execute('"' & StringRegexpReplace($s, "&#(\d+);", '"&chrw($1)&"') & '"')
MsgBox(0, "Emails summarizé", $s & @LF)[private joke]
Donald, y'm'font des trucs pas prévus en MIX !
[/private joke]
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
-
pierrotm777
- Membre émérite

- Messages : 770
- Enregistré le : sam. 11 oct. 2008 14:44
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Gmail Notifier et compatibilité multi langue (utf-8)
GetEmailSummary permet de récupérer le message lui-même (voir GMAIL.au3) .
Je pensais donc utiliser votre filtre autout de cette commande.
L'exemple du post #1 donne un aperçu du problème avec les ' .
Je pensais donc utiliser votre filtre autout de cette commande.
L'exemple du post #1 donne un aperçu du problème avec les ' .
- jchd
- AutoIt MVPs (MVP)

- Messages : 2284
- Enregistré le : lun. 30 mars 2009 22:57
- Localisation : Sud-Ouest de la France (43.622788,-1.260864)
- Status : Hors ligne
Re: [..] Gmail Notifier et compatibilité multi langue (utf-8)
Certes, mais dons pas GetEmailSummary prenant en paramètre la fonction "filtre".
Que donne le dernier exemple, une fois mis en place dans le code ?
Que donne le dernier exemple, une fois mis en place dans le code ?
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
-
pierrotm777
- Membre émérite

- Messages : 770
- Enregistré le : sam. 11 oct. 2008 14:44
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Gmail Notifier et compatibilité multi langue (utf-8)
J'ai essayé comme ci-dessous mais cela me donne la même chose
-
pierrotm777
- Membre émérite

- Messages : 770
- Enregistré le : sam. 11 oct. 2008 14:44
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Gmail Notifier et compatibilité multi langue (utf-8)
Je suis un peu stupide sur ce coup là.
J'avais inversé la place du filtre.
voici ce que je viens d'essayer et qui semble fonctionner avec le ' :
Je vais tester avec d'autre langues pour voir si cela fonctionne aussi
J'avais inversé la place du filtre.
voici ce que je viens d'essayer et qui semble fonctionner avec le ' :
Code : Tout sélectionner
Local $s = 'Unicode html string with some fractional ((2n+1)/8) html codepoints ⅛=1/8 ⅜=3/8 ⅝=5/8 ⅞=7/8'
$s = Execute('"' & StringRegexpReplace(GetEmailSummary($CurrentMessage), "&#(\d+);", '"&chrw($1)&"') & '"')
MsgBox(0, "Html Unicode test", $s & @LF)-
pierrotm777
- Membre émérite

- Messages : 770
- Enregistré le : sam. 11 oct. 2008 14:44
- Localisation : Bordeaux
- Status : Hors ligne
Re: [R] Gmail Notifier et compatibilité multi langue (utf-8)
Bon , j'ai essayé avec de l'allemand qui semble fonctionner bien que je ne le lise pas.
J'ai essayé avec du grec et là ça ne va pas du tout. Il semble que sans le filtre cela fonctionne et plus avec le filtre
Y aurait-il une solution multi langues ?
J'ai essayé avec du grec et là ça ne va pas du tout. Il semble que sans le filtre cela fonctionne et plus avec le filtre
Y aurait-il une solution multi langues ?
-
pierrotm777
- Membre émérite

- Messages : 770
- Enregistré le : sam. 11 oct. 2008 14:44
- Localisation : Bordeaux
- Status : Hors ligne
Re: [R] Gmail Notifier et compatibilité multi langue (utf-8)
Non ce n'est pas ça.
Pour le grec, cela semble fonctionner avec et sans le filtre !
Idem pour le japonais!
Bizar ...
Pour le grec, cela semble fonctionner avec et sans le filtre !
Idem pour le japonais!
Bizar ...
- jchd
- AutoIt MVPs (MVP)

- Messages : 2284
- Enregistré le : lun. 30 mars 2009 22:57
- Localisation : Sud-Ouest de la France (43.622788,-1.260864)
- Status : Hors ligne
Re: [R] Gmail Notifier et compatibilité multi langue (utf-8)
Donne un exemple de lignes html qui posent ou pas problème, la solution générique ne doit pas être loin.
Autre question très corollaire, comment affiches-tu le texte Unicode en sortie et avec quelle police ?
Autre question très corollaire, comment affiches-tu le texte Unicode en sortie et avec quelle police ?
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
-
pierrotm777
- Membre émérite

- Messages : 770
- Enregistré le : sam. 11 oct. 2008 14:44
- Localisation : Bordeaux
- Status : Hors ligne
Re: [R] Gmail Notifier et compatibilité multi langue (utf-8)
Oui , quelle police , si j'ai bien compris il faut une police de caractère compatible unicode . Mais laquelle choisir.
Pour l'instant , j'utilise le plus souvent l'Arial .
Mais laquelle est utilisée par défaut dans autoit. Voilà une bonne question !
Pour l'exemple de page html , je ne sais pas comment la récupérer ni à quelle adresse.
Ce que je sais c'est ce que récupère GMAIL.au3:
Pour l'instant , j'utilise le plus souvent l'Arial .
Mais laquelle est utilisée par défaut dans autoit. Voilà une bonne question !
Pour l'exemple de page html , je ne sais pas comment la récupérer ni à quelle adresse.
Ce que je sais c'est ce que récupère GMAIL.au3:
► Afficher le texte
- jchd
- AutoIt MVPs (MVP)

- Messages : 2284
- Enregistré le : lun. 30 mars 2009 22:57
- Localisation : Sud-Ouest de la France (43.622788,-1.260864)
- Status : Hors ligne
Re: [R] Gmail Notifier et compatibilité multi langue (utf-8)
L'écrasante majorité des polices Windows est Unicode, lance charmap pour t'en convaincre. Par contre, l'Arial ne comporte pas de japonais. Charmap montre tout des polices installées.
AutoIt ne fait pas beaucoup de choix, c'est plutôt ton thème qui choisit d'employer telle police pour tel dialogue ou contrôle standard. Depuis AutoIt, il est facile de changer pour tout contrôle la police par défaut.
Bah, la page html tu la récupères dan $Response. N'ayant pas de compte gmail, je suis assez mal pour tester. Masque les infos personnelles et poste-en un bout qui pose souci dans une boîte
AutoIt ne fait pas beaucoup de choix, c'est plutôt ton thème qui choisit d'employer telle police pour tel dialogue ou contrôle standard. Depuis AutoIt, il est facile de changer pour tout contrôle la police par défaut.
Bah, la page html tu la récupères dan $Response. N'ayant pas de compte gmail, je suis assez mal pour tester. Masque les infos personnelles et poste-en un bout qui pose souci dans une boîte
Code : Tout sélectionner
.La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
