Tengo una aplicación web creada con C # y asp.net. Coloqué un valor de parámetro en la cadena de consulta con un signo más (+). Pero el signo más desaparece.
¿Cómo puedo incluir el signo más (+) en la cadena de consulta sin desaparecer?
Por favor avise.
Gracias.
Editar: código agregado con UrlEncode
string str = Server.UrlEncode(Requery.QueryString["new"]);
c#
javascript
asp.net
domlao
fuente
fuente
UrlBuilder
, parece un poco inútil, que es como me topé con su pregunta. Ver stackoverflow.com/questions/24576239/…UriBuilder
no URLRespuestas:
+
sign tiene un significado semántico en la cadena de consulta. Se usa para representar un espacio. Otro carácter que tiene importancia semántica en la cadena de consulta es el&
que se utiliza para separar los distintosvar=value
pares de la cadena de consulta.La mayoría de los scripts del lado del servidor decodificarían los parámetros de consulta antes de usarlos, para que a
+
se convierta correctamente en un espacio. Ahora, si desea que un literal+
esté presente en la cadena de consulta, debe especificar en su%2B
lugar.+
iniciar sesión la cadena de consulta está decodificada por URL en un espacio.%2B
en la cadena de consulta se descodifica la URL con un signo +.Vea la diferencia entre
http://www.google.com/search?q=foo+bar
y
http://www.google.com/search?q=foo%2Bbar
En los ejemplos anteriores, la secuencia de comandos del servidor de Google decodifica la URL de los parámetros de consulta y luego los usa para realizar la búsqueda.
La codificación de URL no es más que un
%
signo seguido del código hexadecimal del carácter especial. Por ejemplo, sabemos que el código hexadecimal deA
es 0x41 (decimal: 65). Prueba esto:http://www.google.com/search?q=%41
Espero que esto aclare la codificación de URL.
Por lo tanto, si desea que el
+
signo se conserve cuando un JavaScript obtiene una URL con+
signos en sus parámetros de consulta y un script del lado del servidor procesa los parámetros de consulta después de la decodificación de URL, debe codificar los parámetros de consulta en la URL. antes de usar la emisión de la solicitud get HTTP para que todos los+
signos se conviertan en%2B
's cuando la solicitud llega al script del lado del servidor. Ahora, cuando el script del lado del servidor decodifica la URL de la cadena de consulta, todo%2B
se convierte de nuevo en+
signos, que es lo que desea.¿Ver Codificar URL en JavaScript? para aprender a codificar en URL los parámetros usando JavaScript. Respuesta corta de la discusión allí:
var encodedURL = "http://example.com/foo.php?var=" + encodeURIComponent(param);
fuente
Debe codificar mediante URLEncode los valores de la cadena de consulta para asegurarse de que no se pierda ningún carácter especial.
fuente
Consulte la referencia de codificación de URL HTML
Debe codificar el signo +: su valor debe ser% 2B
fuente
+
El signo está permitido en el valor del parámetro de consulta, donde no debe codificarse, porque ya codifica 'espacio'¡Modifico mi declaración anterior para que nadie se confunda!
Crea tu URL usando Server.UrlEncode. p.ej
string myUrl = "http://myurl?param1=" + Server.UrlEncode("my+param+1");
fuente
Otra forma sencilla es,
Request.Url.ToString().Substring(Request.Url.ToString().IndexOf("=") + 1)
asumiendo que mi URL es,http://localhost/MyApp/Activate.aspx?ActivationCode=cHbtqH9P2dDZkx/mYUgFFo7nrNqSFgqdPisAzzu5/nwlEYDOHI+CQw==
fuente
antes de enviarle el parámetro, debe verificar si el parámetro contiene el signo más, si necesita reemplazarlo por una bandera, por ejemplo: el parámetro es: klasjdlkasd + djid3223 puede reemplazar: klasjdlkasdFLAGdjid3223
y cuando vayas a convertir, necesitas reemplazar de nuevo
klasjdlkasd + djid3223
fuente
Prueba esto, me funciona:
Request.QueryString["new"].Trim();
fuente
La solución es SIEMPRE incluir .Replace ("", "+") cuando solicite la cadena de consulta
cadena s = Request.QueryString ["id"]. Trim (). Reemplazar ("", "+");
fuente: http://www.webmasterworld.com/forum47/3238.htm
fuente
Agregue esta línea en Decrypt Funcation:
strText = strText.Replace(" ", "+");
fuente