Bonjour bonjour,

J'ai un "gros" problème, en effet lorsque je créer un bête mailto, et que je veux spécifier un attribut à "body", les accents passent mal Smiley ohwell , je m'explique,

J'ai ma page Html encodé en iso-8859-1, et j'aimerai faire un mailto tel que :

<a href="mailto:kiwi@kiwi.com?body=Un texte avec des é et des à">Lorem ipsum</a>


Le problème vous vous en doutez, c'est que les caractères accentués ne passent pas Smiley ohwell J'ai donc essayer en JS :

<script type="text/javascript">//j'appelle ce code via une fonction au moment du clic
var mail = document.getElementById('accents').href;
mail = encodeURI(mail); // là si je fais un alert(mail); les caractères sont bien encodés avec les %XX
document.getElementById('accents').href = mail;
</script>

<a href="mailto:kiwi@kiwi.com?body=Un texte avec des é et des à" id="accents">Lorem ipsum</a>


Seulement lorsque que l'on clic sur le lien on obtient des caractères étranges comme des "é" à la place des "é" alors que la chaîne mail est encodée Smiley ohwell J'ai cherché sur le web, visblement je suis pas le seul à avoir ce problème mais je n'ai pas trouvé de solution Smiley ohwell Le problème est que le navigateur "traduit" les %XX par leurs vraies valeurs, donc l'encodage devient inutile Smiley decu Du coup dans Outlook je retrouve mes vieux démons que sont les "é".

SI vous avez une idée, solution, envie de me laisser un message de soutien Smiley lol ça sera le bienvenue,

Merci beaucoup Smiley lol

PS : J'ai réduit le code à son strict minimum pour faciliter la compréhension Smiley smile
Salut,

il me semble qu'il suffit d'utiliser la fonction PHP rawurlencode. Par exemple :
<a href="mailto:kiwi@kiwi.com?subject=<?php echo rawurlencode("Un objet avec des éàîô"); ?>&amp;body=<?php echo rawurlencode("Un texte avec des éàîô"); ?>">Lorem ipsum</a>

Si tu ne disposes pas de PHP il faut mettre directement le texte transformé en %xx. Pour le trouver facilement il suffit d'utiliser la barre d'adresse de ton navigateur. Par exemple : http://example.com?montexte=un texte transformé (cliquer et récupérer le texte dans l'url).

A+
Modifié par Heyoan (17 Nov 2008 - 21:57)
@Heyoan : si j'avais le droit au PHP j'aurais fait un fait un formulaire envoyé via mail() ^^ Malheureusement c'est pour les cours et on n'a le droit qu'au Html/CSS/JS. Et pour le coup des %XX, le fonction encodeURI() en JS le fait, le problème c'est que si par exemple mon mailto vaut : "mailto:lorem@ipsum.dolor?body=%XX%XX%XX%XX", dans le client de messagerie je ne retrouve pas les caractères que je souhaite, les accents notamment Smiley ohwell

@Florent V. : j'avais oublié de préciser deux choses, d'un c'est pour les cours donc je doit tout faire moi-même Smiley cligne De deux, le contenu à traduire est "généré" via une saisie de l'utilisateur donc je ne peux pas le traduire à l'avance Smiley smile

Merci pour vos réponses Smiley langue
Gérer des mails avec un contenu précis en disant à un client mail quoi faire est une connerie. Le client peut n'avoir que faire des paramètres qui lui sont passés, mal les analyser, faire sauter les retours à la ligne, se planter dans les encodages, etc. Sans parler des utilisateurs de webmail qui n'ont même pas configuré Outlook Express sur leur ordinateur (ou qui utilisent un poste qui n'est pas le leur), et qui sont bien arrangés par un mailto avec contenu ou titre automatique, ça leur fait une belle jambe. Donc si on doit gérer de l'envoi de mail avec un contenu précis (saisie de l'utilisateur notamment), on fait ça côté serveur, comme tu t'en doutes.

L'exercice demande à ce que tu fasses un mailto: avec contenu pour le mail côté client? Qu'avais fumé le ou la prof? Smiley lol

Bon, si c'est côté client tu est condamné à utiliser un format ou l'autre pour tes caractères accentués (et tout caractère non ASCII), et prier pour que ça passe... en sachant que ça ne passera jamais avec tous les clients. Faut faire des recherches pour savoir si certains clients acceptent des formats particuliers: direct (voir si ça change suivant l'encodage de la page où est placé le mailto), URI encode, entités HTML, JS escapes, etc.
@Florent V. : J'ai bien entendu le même point de vue, c'est juste que l'on doit faire un petit site qui sera noté, du coup pour essayer de changer de l'ordinaire et du banal mailto, j'avais créé un formulaire, qui s'affiche si et seulement si le JS est activé, sinon un mailto traditionnel s'affiche, bref l'utilisateur remplis les champs et quand il le valide, je le vérifie en JS, le 'mets en forme', puis change l'action du formulaire en "mailto:kiwi@dsqjmdsjdl.com?subject=ddddd&body=jjjjj".

C'est quand même ch**nt de pas pouvoir utiliser le PHP :s (moi même je ne clique jamais sur un mailto, je cherche un formulaire, ou bien clic droit copier l'adresse du lien puis ctrl v dans gmail). Pourquoi encore s'embêter avec des mailto, c'est le web 1.0 ça Smiley lol

De toutes façon je crois que je vais abandonné cette idée, car à la vue de ces spécifications ( http://tools.ietf.org/html/rfc1738[/url]), où il est dit :
a écrit :
The octets 80-FF hexadecimal are not
used in US-ASCII, and the octets 00-1F and 7F hexadecimal represent
control characters; these must be encoded.

Je comprends tout simplement que l'on ne peut utiliser les caractères acccentués... Sinon il me reste une solution inélégante qui ets de convertir les (é|è|ê) en e est de faire pareil pour toutes les lettres mais bon c'est vraiment pas top, je sens que je vais être obligé de rester sur un bête mailto:kiwi@kiwi.info?body=Bonjour,%OAOA Smiley bawling .

Enfin bon si quelqu'un a une idée de quelconque artifice pouvant résoudre mon problème je suis toujours preneur Smiley lol Ou même d'une idée pouvant changé du traditionnel mailto Smiley cligne
Modifié par cerium50 (18 Nov 2008 - 21:48)