IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

HTML Discussion :

Mailto accents et encodage


Sujet :

HTML

  1. #1
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 242
    Par défaut Mailto accents et encodage
    Bonjour

    Je souhaiterais savoir s'il est possible d'écrire des liens de type mailto avec des accents à l'intérieur du corps du message.

    J'ai essayé diverses possibilités :
    Directement l'accent sur ma page, encodée en UTF-8:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <a href="mailto:john@test.com?body=terminée">Mail</a>
    Avec la valeur unicode du "é" qui est E9
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <a href="mailto:john@test.com?body=termin%E9e">Mail</a>
    Avec le "é" encodé en UTF-8, sur deux octets, qui vaut C3A9.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <a href="mailto:john@test.com?body=termin%C3A9e">Mail</a>
    Avec le "é" avec son htmlspecialchar &eacute (j'ai écrit le "&" "&amp;", cela ma semblé judicieux, enfin pas si sûr).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <a href="mailto:john@test.com?body=termin&amp;eacute;e">Mail</a>
    Mais en général, cela ne fonctionne pas, ou pas sur tous les postes. Le client de messagerie (Outlook, Thunderbird) n'interprête pas toujours de la bonne façon le body.

    Je me demande même si cela est possible, au vu de la rfc 2368.
    The user agent interpreting a mailto URL SHOULD choose not to create
    a message if any of the headers are considered dangerous; it may also
    choose to create a message with only a subset of the headers given in
    the URL. Only the Subject, Keywords, and Body headers are believed
    to be both safe and useful.

    The creator of a mailto URL cannot expect the resolver of a URL to
    understand more than the "subject" and "body" headers. Clients that
    resolve mailto URLs into mail messages should be able to correctly
    create RFC 822-compliant mail messages using the "subject" and "body"
    headers.
    Car j'avais pensé à mettre des header du genre "Content-Type" ou "MIME-version", mais cette RFC n'en fait pas mention, donc je me demande si cela est vraiment légal...

    Quelqu'un pourrait-il m'éclairer sur la question ?

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Pas loin .

    Normalement c'est %C3%A9, chaque octet de l'utf-8 échappé.

    Mais ça dépend aussi de certains paramètres que je n'ai jamais bien pu comprendre. Essaie si ça te règle ton problème avec la plupart des combinaisons navigateur + programme mail. Si non, bah désolé .
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 242
    Par défaut
    Merci de ta réponse thelvin !

    En fait, j'avais essayé avec "%C3%A9" , mais j'avais simplement mal recopié sur mon post...

    Ca fonctionne sur mon ordi par exemple, mais pas sur celui de mon voisin...

  4. #4
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 242
    Par défaut
    En réponse à moi-même, ca éclaircira peut être certains points, et cela sera peut être utile à d'autres :
    Dans Outlook, il existe une option qui permet de faire varier le comportement du protocole mailto :

    Sous Outlook 2007
    outils->option->Format du courrier->options internationales-> cocher "Activer la prise en charge de l'UTF-8 pour le protocole mailto:"

    Sous Outlook 2010
    fichier->options->options avancées->options internationales: cocher "Activer la prise en charge de UTF-8 pour le protocole mailto:"

    Par défaut, lorsque l'option n'est pas cochée, mon outlook utilise l'encodage iso 8859-1 (ou latin-1, l'encodage par défaut français). Probablement que cela change en fonction de certaines variables locales...
    Donc dans ce cas, un %E9 est bien interprété en "é" dans le body.

    Lorsque l'option est cochée, le %E9 n'affiche aucun caractère dans mon body. En revanche un %C3%A9, qui correspond aux deux octets qui encodent le caractère "é" (E9) en UTF-8, affiche bien le "é".

    Remarque supplémentaire : dans la barre d'adresse du navigateur, si vous tapez :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mailto:bidule@test.com?body=gagnée
    avec l'option décochée de Outlook, cela peut vous réserver des surprises.
    Sur Firefox, le "é" est affiché "é" dans le message. Comme si le "é" avait été encodé au passage en UTF-8.
    Sur IE8, le "é" est affiché correctement dans le message, car laissé au format ISO.

    Moralité : Il ne me semble pas possible d'écrire des accents dans le body, que l'on saura correctement interprétés par tous les clients de messagerie car:
    • Les clients de messageries peuvent être configurés différemment (cf case à cocher de Outlook) concernant l'encodage des caractères.
    • Le protocole mailto ne fait pas mention d'un moyen pour spécifier l'encodage du body dans son protocole, qui pourrait forcer le client de messagerie à utiliser le bon encodage.


    Cela vous parait-il exact ?

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    D'abord merci pour cette analyse que je n'ai jamais faite, parce qu'Outlook ça me broute, et que je ne l'ai pas de toute façon.

    Citation Envoyé par Climoo Voir le message
    Sur Firefox, le "é" est affiché "é" dans le message. Comme si le "é" avait été encodé au passage en UTF-8.
    C'est le cas, c'est officiellement ce que les navigateurs sont censés faire. Sauf mention contraire, les caractères non-ASCII des URLs sont censés être transcrits en UTF-8.
    Et il n'y a pas de mention contraire.

    Citation Envoyé par Climoo Voir le message
    Sur IE8, le "é" est affiché correctement dans le message, car laissé au format ISO.
    Techniquement il n'est pas laissé au format ISO mais mis au format ISO.
    Ce que tu tapes dans la barre d'adresse n'a pas de format d'encodage, puisque c'est un truc tapé au clavier et affiché à l'écran.
    (Non, ce n'est pas important, en effet.)

    Moralité : Il ne me semble pas possible d'écrire des accents dans le body, que l'on saura correctement interprétés par tous les clients de messagerie car:
    • Les clients de messageries peuvent être configurés différemment (cf case à cocher de Outlook) concernant l'encodage des caractères.
    • Le protocole mailto ne fait pas mention d'un moyen pour spécifier l'encodage du body dans son protocole, qui pourrait forcer le client de messagerie à utiliser le bon encodage.


    Cela vous parait-il exact ?
    Oui.
    (Enfin, mailto dit qu'il se base sur le format d'URL, et il en découle que c'est du UTF-8. Mais bon, pour ces vieux trucs, la logique URL donc UTF-8 est souvent oubliée.)

    Mais il y a d'autres trucs à tenter si on est acharné, comme ajouter &content-type=text%2Fplain;charset%3DUTF-8 (il paraît que ça changeait quelque chose à une lointaine époque.)

    Ou alors la notation =?UTF-8?Q?gagn=C3=A9e?=
    correctement échappé en URL puis en HTML.

    Il y en a sûrement d'autres.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 242
    Par défaut
    Merci encore pour ta réponse thelvin...
    J'ai essayé ces petites astuces.
    Malheureusement, ça n'a pas été très concluant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mailto:john@test.com?body=?UTF-8?Q?gagn=C3=A9e?=
    M'affiche "?UTF-8?Q?gagn=C3=A9e?=", avec ou sans l'option de Outlook cochée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mailto:john@test.com?body=%3FUTF-8%3FQ%3Fgagn%3DC3%3DA9e%3F%3D
    Me fait la même chose
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mailto:john@test.com?body=gagn%C3%A9e&content-type=text%2Fplain;charset%3DUTF-8
    A exactement le même comportement que s'il n'y avait pas les entêtes (elles semblent tout simplement ignorées par Outlook).

    Donc bon, je crois que je vais m'arrêter là, je ne pense pas trouver de solutions miracle. Et en cherchant sur le net, les avis vont généralement dans ce sens.

    Reste à savoir si je vais obliger le texte à ne pas comporter d'accents, ou si je vais laisser tomber le mailto au profit d'une gestion d'un envoi de mail côté serveur.

    En tout cas, tout cela reste assez instructif...

Discussions similaires

  1. Accent Java encodage
    Par franfr57 dans le forum Général Java
    Réponses: 2
    Dernier message: 03/11/2011, 16h17
  2. Réponses: 0
    Dernier message: 21/07/2010, 15h36
  3. Réponses: 5
    Dernier message: 10/09/2009, 11h37
  4. pb accent et encodage avec ajax
    Par penguin50 dans le forum Ruby on Rails
    Réponses: 0
    Dernier message: 20/02/2008, 14h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo