it-swarm.com.de

Pluszeichen in Abfragezeichenfolge

Ich habe eine Webapp mit C # und asp.net erstellt. Ich habe einen Parameterwert mit einem Pluszeichen (+) in die Querzeichenfolge eingefügt. Aber das Pluszeichen verschwindet.

Wie kann ich das Pluszeichen (+) in die Abfragezeichenfolge einschließen, ohne zu verschwinden?

Bitte beraten.

Vielen Dank.

Bearbeiten: Code mit UrlEncode hinzugefügt

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

+-Zeichen hat in der Abfragezeichenfolge eine semantische Bedeutung. Es wird verwendet, um ein Leerzeichen darzustellen. Ein anderes Zeichen mit semantischer Bedeutung in der Abfragezeichenfolge ist &, das zur Trennung der verschiedenen var=value-Paare in der Abfragezeichenfolge verwendet wird.

Die meisten serverseitigen Skripts dekodieren die Abfrageparameter, bevor sie verwendet werden, sodass ein + ordnungsgemäß in ein Leerzeichen konvertiert wird. Wenn nun ein Literal + in der Abfragezeichenfolge vorhanden sein soll, müssen Sie stattdessen %2B angeben.

+-Zeichen in der Abfragezeichenfolge ist in ein Leerzeichen URL-decodiert. %2B in der Abfragezeichenfolge ist URL-decodiert in ein Pluszeichen.

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 werden die Abfrageparameter von Google durch das Serverskript der URL decodiert und anschließend für die Suche verwendet.

Die URL-Kodierung ist nichts anderes als ein %-Zeichen, gefolgt vom Hex-Code des Sonderzeichens. Zum Beispiel wissen wir, dass der Hex-Code von A 0x41 (dezimal: 65) ist. Versuche dies: 

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

Hoffe, das macht die URL-Kodierung klar.

Wenn das +-Zeichen erhalten bleiben soll, wenn ein JavaScript eine URL mit +-Zeichen in den Abfrageparametern abruft und ein serverseitiges Skript die Abfrageparameter nach der URL-Dekodierung verarbeitet, sollten Sie die Abfrageparameter mit einer URL-Verschlüsselung versehen Die URL vor der Verwendung der HTTP-Abrufanforderung, sodass alle +-Zeichen in %2B-Zeichen konvertiert werden, wenn die Anforderung das serverseitige Skript erreicht. Wenn nun die serverseitige Skript-URL die Abfragezeichenfolge decodiert, werden alle %2Bs in +-Zeichen konvertiert, was Sie möchten.

URL in JavaScript kodieren? um zu lernen, wie Sie die Parameter mithilfe von JavaScript URL-kodieren. Kurze Antwort aus der Diskussion dort:

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

Sie sollten Ihre Abfragezeichenfolge-Werte URLEncodeen, um sicherzustellen, dass keine Sonderzeichen verloren gehen.

4
DoctorMick

Siehe HTML-URL-Codierungsreferenz

Sie müssen das + -Zeichen kodieren. Der Wert sollte% 2B sein

2
Morten Anderson

Ich ändere meine vorherige Aussage, damit niemand verwirrt wird!

Erstellen Sie Ihre URL mit dem Server.UrlEncode .

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

bevor Sie den Parameter senden, müssen Sie prüfen, ob der Parameter ein Pluszeichen enthält. Wenn Sie ein Flag ersetzen möchten, beispielsweise: Der Parameter lautet: klasjdlkasd + djid3223 können Sie ersetzen: klasjdlkasdFLAGdjid3223

und wenn Sie konvertieren, müssen Sie Angain ersetzen

klasjdlkasd + djid3223

0

Ein anderer einfacher Weg ist, Request.Url.ToString().Substring(Request.Url.ToString().IndexOf("=") + 1) anzunehmen, dass meine URL http://localhost/MyApp/Activate.aspx?ActivationCode=cHbtqH9P2dDZkx/mYUgFFo7nrNqSFgqdPisAzzu5/nwlEYDOHI+CQw== ist.

0
SharK