web-dev-qa-db-fra.com

Comment coder le symbole plus (+) dans l'URL

Le lien URL ci-dessous ouvrira une nouvelle fenêtre de messagerie Google. Le problème que j'ai, c'est que Google remplace tout le signe plus (+) dans le corps de l'e-mail par un espace vide. Il semble que cela ne se produise qu'avec le signe +. Des suggestions sur la façon de remédier à cela? (Je travaille la page Web ASP.NET)

https://mail.google.com/mail?view=cm&tf=0&[email protected]&su=some sujet et corps = salut et salut

(Dans l'e-mail du corps, "Salut là + Bonjour là" apparaîtra comme "Salut là bonjour là")

53
user523234

Le + le caractère a une signification particulière dans une url => cela signifie un espace. Si vous souhaitez utiliser le + signe que vous devez l'URL le coder:

body=Hi+there%2bHello+there

Voici un exemple de la façon dont vous pouvez générer correctement des URL dans .NET:

var uriBuilder = new UriBuilder("https://mail.google.com/mail");

var values = HttpUtility.ParseQueryString(string.Empty);
values["view"] = "cm";
values["tf"] = "0";
values["to"] = "[email protected]";
values["su"] = "some subject";
values["body"] = "Hi there+Hello there";

uriBuilder.Query = values.ToString();

Console.WriteLine(uriBuilder.ToString());

Le résultat

https://mail.google.com:443/mail?view=cm&tf=0&to=someemail%40somedomain.com&su=some+subject&body=Hi+there%2bHello+there

83
Darin Dimitrov

Si vous voulez un symbole plus (+) dans le corps, vous devez le coder en 2B.

Par exemple: Essayez ceci

16
Black Frog

Il est plus sûr de toujours coder en pourcentage tous les caractères sauf ceux définis comme "non réservés" dans la RFC-3986.

unreserved = ALPHA/DIGIT/"-"/"."/"_"/"~"

Donc, encodez en pourcentage le caractère plus et d'autres caractères spéciaux.

Le problème que vous rencontrez avec les avantages est dû au fait que, selon la RFC-1866 (spécification HTML 2.0), paragraphe 8.2.1. sous-paragraphe 1., "Les noms et valeurs des champs de formulaire sont échappés: les caractères d'espace sont remplacés par" + ", puis les caractères réservés sont échappés"). Cette façon de coder les données du formulaire est également donnée dans les spécifications HTML ultérieures, recherchez les paragraphes pertinents sur application/x-www-form-urlencoded.

2
Maxim Masiutin

pour le langage javascript, utilisez la fonction encodeURIComponent pour coder les caractères spéciaux

2
morteza khadem