web-dev-qa-db-fra.com

Plus la chaîne de requête de connexion

J'ai une application Web créée à l'aide de C # et asp.net. J'ai placé une valeur de paramètre dans la chaîne de requête avec le signe plus (+). Mais le signe plus disparaît.

Comment puis-je inclure le signe plus (+) dans la chaîne de requête sans disparaître?

S'il vous plaît donnez votre avis.

Merci.

Edit: code ajouté avec UrlEncode

string str = Server.UrlEncode(Requery.QueryString["new"]);
45
domlao

Le signe + a une signification sémantique dans la chaîne de requête. Il est utilisé pour représenter un espace. Un autre caractère qui a une importance sémantique dans la chaîne de requête est &, utilisé pour séparer les différentes paires var=value dans la chaîne de requête.

La plupart des scripts côté serveur décodent les paramètres de la requête avant de les utiliser, de sorte qu'un + soit correctement converti en un espace. Désormais, si vous souhaitez qu'un + littéral soit présent dans la chaîne de requête, vous devez spécifier %2B à la place.

Le signe + dans la chaîne de requête est décodé par URL dans un espace. %2B dans la chaîne de requête est une URL décodée en signe +.

Voyez la différence entre

http://www.google.com/search?q=foo+bar

et

http://www.google.com/search?q=foo%2Bbar

Dans les exemples ci-dessus, le script de serveur de Google consiste à décoder par URL les paramètres de la requête et à les utiliser pour effectuer la recherche.

Le codage d'URL n'est rien d'autre que le signe % suivi du code hexadécimal du caractère spécial. Par exemple, nous savons que le code hexadécimal de A est 0x41 (décimal: 65). Essaye ça: 

http://www.google.com/search?q=%41

J'espère que cela rend le codage d'URL clair.

Donc, si vous voulez que le signe + soit préservé lorsqu'un JavaScript récupère une URL avec des signes + dans ses paramètres de requête et qu'un script côté serveur traiterait les paramètres de requête après le décodage par URL, vous devez coder par URL les paramètres de requête l'URL avant d'utiliser l'émission de la requête HTTP get afin que tous les signes + soient convertis en %2B lorsque la demande atteint le script côté serveur. Désormais, lorsque l'URL de script côté serveur décode la chaîne de requête, tous les %2B sont reconvertis en signes +, ce que vous souhaitez.

Voir Encoder l'URL en JavaScript? pour apprendre à coder les paramètres à l'aide d'URL à l'aide de JavaScript. Réponse courte de la discussion ici:

var encodedURL = "http://example.com/foo.php?var=" + encodeURIComponent(param);
94
Susam Pal

Vous devez utiliser URLEncode les valeurs de votre chaîne de requête pour vous assurer de ne pas perdre les caractères spéciaux.

4
DoctorMick

Regardez Référence de codage d'URL HTML

Vous devez encoder le signe + - sa valeur doit être% 2B

2
Morten Anderson

Je modifie ma déclaration précédente pour que personne ne s'embrouille!

Créez votre URL en utilisant le Server.UrlEncode .

string myUrl = "http://myurl?param1="  + Server.UrlEncode("my+param+1");
0
gred

avant de vous envoyer le paramètre, vous devez vérifier si le paramètre contient le signe plus, si vous avez besoin de remplacer par un indicateur, par exemple: le paramètre est: klasjdlkasd + djid3223 pouvez-vous remplacer: klasjdlkasdFLAGdjid3223

et quand vous allez convertir, vous devez remplacer angain

klasjdlkasd + djid3223

0

Une autre façon simple est, Request.Url.ToString().Substring(Request.Url.ToString().IndexOf("=") + 1) en supposant que mon URL est, http://localhost/MyApp/Activate.aspx?ActivationCode=cHbtqH9P2dDZkx/mYUgFFo7nrNqSFgqdPisAzzu5/nwlEYDOHI+CQw==

0
SharK