Quelle est la bonne façon d'échapper à une chaîne de caractères pour un lien mailto

J'ai un mailto: lien dans une page ici, y compris subject= et body= paramètres mais je ne suis pas sûr de la manière de correctement s'échapper les données dans les paramètres.

La page est codée dans utf-8 donc je suppose que tous les caractères spéciaux comme les accents doivent être encodés dans utf-8 représentations pour les URL trop?

Pour le moment je suis en utilisant rawurlencode() comme urlencode() à insérer + caractères dans tous les endroits où les espaces ont été mais je n'en suis pas sûr si ce est la bonne façon de le faire.

J'aurais pensé qu' rawurlencode() ou urlencode() devrait faire le travail - le navigateur doit décoder correctement les deux versions avant de le transmettre au client de messagerie. Vous pouvez également créer un tableau de paramètres et d'utiliser les http_build_query() - la chaîne de requête est dans le même format. Assurez-vous aussi de passer la chaîne résultante à partir de l'une de ces options à l'aide de htmlspecialchars() si c'est pour être utilisé dans une page HTML...
Eh bien, il fonctionne comme ça dans tous les usecases que j'y ai pensé, mais c'est peut-être pas la bonne façon de le faire et mon navigateur/client de messagerie juste de reconnaître correctement et de travailler autour de cette erreur, c'est pourquoi il est demandé, juste pour être sûr 🙂
Il peut y avoir des situations où l'un fonctionne et l'autre pas, mais si c'est le cas, alors il serait la faute du navigateur pour ne pas les interpréter correctement. Si il y a un bug connu avec l'un ou l'autre évidemment, il est préférable de l'éviter, mais je ne sais pas de n'importe quel navigateur moderne qui ferait une telle erreur fondamentale - si il y en a un, il va probablement être pauvre que d'être inutilisable de toute façon.

OriginalL'auteur bardiir | 2012-01-20