Ich habe eine Webanwendung mit C # und asp.net erstellt. Ich habe einen Parameterwert mit einem Pluszeichen (+) in den Querystring eingefügt. Aber das Pluszeichen verschwindet.
Wie kann ich das Pluszeichen (+) in die Abfragezeichenfolge aufnehmen, ohne zu verschwinden?
Bitte beraten.
Vielen Dank.
Bearbeiten: Code mit UrlEncode hinzugefügt
string str = Server.UrlEncode(Requery.QueryString["new"]);
c#
javascript
asp.net
domlao
quelle
quelle
UrlBuilder
, es scheint ein bisschen nutzlos zu sein, so bin ich auf Ihre Frage gestoßen. Siehe stackoverflow.com/questions/24576239/…UriBuilder
nicht URLAntworten:
+
Zeichen hat eine semantische Bedeutung in der Abfragezeichenfolge. Es wird verwendet, um einen Raum darzustellen. Ein weiteres Zeichen, das in der Abfragezeichenfolge eine semantische Bedeutung hat&
, wird verwendet, um die verschiedenenvar=value
Paare in der Abfragezeichenfolge zu trennen .Die meisten serverseitigen Skripte dekodieren die Abfrageparameter, bevor sie verwendet werden, sodass a
+
ordnungsgemäß in ein Leerzeichen konvertiert wird. Wenn Sie nun möchten, dass ein Literal+
in der Abfragezeichenfolge vorhanden ist, müssen Sie%2B
stattdessen angeben .+
Das Zeichen in der Abfragezeichenfolge wird per URL in ein Leerzeichen dekodiert.%2B
in der Abfragezeichenfolge wird die URL in ein + -Zeichen decodiert.Sehen Sie den Unterschied zwischen
http://www.google.com/search?q=foo+bar
und
http://www.google.com/search?q=foo%2Bbar
In den obigen Beispielen dekodiert das Google-Serverskript die Abfrageparameter per URL und verwendet sie dann für die Suche.
Die URL-Codierung ist nichts anderes als ein
%
Zeichen, gefolgt vom Hex-Code des Sonderzeichens. Zum Beispiel wissen wir, dass der Hex-Code vonA
0x41 (dezimal: 65) ist. Versuche dies:http://www.google.com/search?q=%41
Hoffe das macht die URL-Codierung klar.
Wenn Sie also möchten, dass das
+
Zeichen erhalten bleibt, wenn ein JavaScript eine URL mit+
Zeichen in seinen Abfrageparametern abruft und ein serverseitiges Skript die Abfrageparameter nach der URL-Dekodierung verarbeitet, sollten Sie die Abfrageparameter in der URL URL-codieren vor der Verwendung der Ausgabe der HTTP-Abrufanforderung, sodass alle+
Zeichen in%2B
's konvertiert werden, wenn die Anforderung das serverseitige Skript erreicht. Wenn das serverseitige Skript die Abfragezeichenfolge per URL dekodiert, werden alle%2B
wieder in+
Zeichen konvertiert, was Sie möchten.Siehe URL in JavaScript verschlüsseln? Hier erfahren Sie, wie Sie die Parameter mithilfe von JavaScript per URL codieren. Kurze Antwort aus der dortigen Diskussion:
var encodedURL = "http://example.com/foo.php?var=" + encodeURIComponent(param);
quelle
Sie sollten Ihre Abfragezeichenfolgenwerte URLEncode, um sicherzustellen, dass keine Sonderzeichen verloren gehen.
quelle
Schauen Sie sich die HTML-URL-Codierungsreferenz an
Sie müssen das + -Zeichen codieren - Der Wert sollte% 2B sein
quelle
+
Das Vorzeichen ist im Abfrageparameterwert zulässig, wo es nicht codiert werden sollte, da es bereits 'Leerzeichen' codiertIch ändere meine vorherige Aussage, damit niemand verwirrt wird!
Erstellen Sie Ihre URL mit dem Server.UrlEncode. z.B
string myUrl = "http://myurl?param1=" + Server.UrlEncode("my+param+1");
quelle
Ein anderer einfacher Weg ist,
Request.Url.ToString().Substring(Request.Url.ToString().IndexOf("=") + 1)
vorausgesetzt meine URL ist,http://localhost/MyApp/Activate.aspx?ActivationCode=cHbtqH9P2dDZkx/mYUgFFo7nrNqSFgqdPisAzzu5/nwlEYDOHI+CQw==
quelle
Bevor Sie Ihren Parameter senden, müssen Sie überprüfen, ob der Parameter ein Pluszeichen enthält. Wenn Sie ein Flag ersetzen müssen, zum Beispiel: Der Parameter lautet: klasjdlkasd + djid3223 können Sie ersetzen: klasjdlkasdFLAGdjid3223
und wenn Sie konvertieren gehen, müssen Sie angain ersetzen
klasjdlkasd + djid3223
quelle
Versuchen Sie dies, es funktioniert für mich:
Request.QueryString["new"].Trim();
quelle
Die Lösung besteht darin, IMMER .Replace ("", "+") einzuschließen, wenn Sie Querystring anfordern
Zeichenfolge s = Request.QueryString ["id"]. Trim (). Replace ("", "+");
Quelle: http://www.webmasterworld.com/forum47/3238.htm
quelle
Fügen Sie diese Zeile in Entschlüsselungsfunktion hinzu:
strText = strText.Replace(" ", "+");
quelle