En JavaScript:
encodeURIComponent("©√") == "%C2%A9%E2%88%9A"
¿Existe un equivalente para las aplicaciones de C #? Para escapar de los caracteres HTML que utilicé:
txtOut.Text = Regex.Replace(txtIn.Text, @"[\u0080-\uFFFF]",
m => @"&#" + ((int)m.Value[0]).ToString() + ";");
Pero no estoy seguro de cómo convertir la coincidencia al formato hexadecimal correcto que utiliza JS. Por ejemplo este código:
txtOut.Text = Regex.Replace(txtIn.Text, @"[\u0080-\uFFFF]",
m => @"%" + String.Format("{0:x}", ((int)m.Value[0])));
Devuelve " %a9%221a"
para en "©√"
lugar de "%C2%A9%E2%88%9A"
. Parece que necesito dividir la cadena en bytes o algo así.
Editar: Esta es una aplicación de Windows, los únicos elementos disponibles en System.Web
son: AspNetHostingPermission
, AspNetHostingPermissionAttribute
y AspNetHostingPermissionLevel
.
HttpUtility.HtmlEncode
/ DecodificarHttpUtility.UrlEncode
/ DecodificarPuede agregar una referencia al
System.Web
ensamblaje si no está disponible en su proyectofuente
Intenté hacer un análogo totalmente compatible de encodeURIComponent de javascript para c # y después de mis experimentos de 4 horas encontré esto
c # CÓDIGO:
el resultado es: !% 40% 23% 24% 25% 5e% 26 * () _% 2b% 20some% 20text% 20here% 20% d0% b0% d0% bb% d0% b8% 20% d0% bc% d0% b0% d0% bc% d0% b5% d0% b4% d0% be% d0% b2% 20% d0% b1% d0% b0% d0% ba% d1% 83
Después de decodificarlo con decodeURLComponent () de Javascript;
obtendrá esto :! @ # $% ^ & * () _ + texto aquí али мамедов баку
Gracias por su atención
fuente
Uri.EscapeDataString("!@#$%^&*()_+ some text here али мамедов баку")
en su lugar.Uri.EscapeDataString
codifica los caracteres '(' y ')' mientrasHttpUtility.UrlEncode
que no.System.Uri.EscapeUriString () no parecía hacer nada, pero System.Uri.Escape Data String () funcionó para mí.
fuente
Intente
Server.UrlEncode()
, oSystem.Web.HttpUtility.UrlEncode()
en los casos en que no tenga acceso alServer
objeto. También puede usarSystem.Uri.EscapeUriString()
para evitar agregar una referencia alSystem.Web
ensamblaje.fuente
Uri.EscapeUriString()
corresponde a JavaScript,encodeURI()
que conserva los caracteres reservados por URI. tales como/
,&
, ... tal cual (más#
), mientras que - como se ha descubierto, esUri.EscapeDataString()
que corresponde a JavaScript deencodeURIComponent()
.Para una aplicación de la Tienda Windows, no tendrá HttpUtility. En cambio, tienes:
Para un URI, antes del '?':
Para un nombre o valor de consulta URI, después del '?':
Para un nombre o valor de consulta x-www-form-urlencoded , en un contenido POST:
fuente
Puede usar el objeto Servidor en el espacio de nombres System.Web
Server.UrlEncode, Server.UrlDecode, Server.HtmlEncode y Server.HtmlDecode.
Editar: el póster agregó que se trataba de una aplicación de Windows y no de una web como se podría creer. Los elementos enumerados anteriormente estarían disponibles en la clase HttpUtility dentro de System.Web, que debe agregarse como referencia al proyecto.
fuente