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"]);
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);
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.
Regardez Référence de codage d'URL HTML
Vous devez encoder le signe + - sa valeur doit être% 2B
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");
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
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==