it-swarm-es.com

Cómo codificar el símbolo más (+) en la URL

El siguiente enlace URL abrirá una nueva ventana de correo de Google. El problema que tengo es que Google reemplaza todos los signos más (+) en el cuerpo del correo electrónico con espacios en blanco. Parece que solo sucede con el signo +. ¿Alguna sugerencia sobre cómo remediar esto? (Estoy trabajando en la página web de ASP.NET)

https://mail.google.com/mail?view=cm&tf=0&[email protected]&su=some subject & body = Hola allí + Hola allí

(En el correo electrónico del cuerpo, "Hola allí + Hola allí" aparecerá como "Hola allí Hola")

53
user523234

El carácter + tiene un significado especial en url => significa espacios en blanco. Si desea utilizar el signo +, necesita codificarlo mediante URL:

body=Hi+there%2bHello+there

Aquí hay un ejemplo de cómo podría generar urls correctamente en .NET:

var uriBuilder = new UriBuilder("https://mail.google.com/mail");

var values = HttpUtility.ParseQueryString(string.Empty);
values["view"] = "cm";
values["tf"] = "0";
values["to"] = "[email protected]";
values["su"] = "some subject";
values["body"] = "Hi there+Hello there";

uriBuilder.Query = values.ToString();

Console.WriteLine(uriBuilder.ToString());

El resultado

https://mail.google.com:443/mail?view=cm&tf=0&to=someemail%40somedomain.com&su=some+subject&body=Hi+there%2bHello+there

81
Darin Dimitrov

Si desea un símbolo más (+) en el cuerpo, debe codificarlo como 2B.

Por ejemplo: Prueba esto

15
Black Frog

Es más seguro siempre codificar en porcentaje todos los caracteres, excepto aquellos definidos como "sin reserva" en RFC-3986.

sin reservas = ALPHA/DIGIT/"-"/"."/"_"/"~"

Por lo tanto, codifique en porcentaje el carácter más y otros caracteres especiales.

El problema que tiene con las ventajas es que, de acuerdo con RFC-1866 (especificación HTML 2.0), el párrafo 8.2.1. subpárrafo 1., "Se escapan los nombres y valores de los campos de formulario: los caracteres de espacio se reemplazan por '+', y luego se escapan los caracteres reservados"). Esta forma de codificar datos de formularios también se proporciona en especificaciones HTML posteriores, busque párrafos relevantes sobre application/x-www-form-urlencoded.

2
Maxim Masiutin

para el lenguaje javascript use la función encodeURIComponent para codificar caracteres especiales

2
morteza khadem