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.Webson: AspNetHostingPermission, AspNetHostingPermissionAttributey AspNetHostingPermissionLevel.

HttpUtility.HtmlEncode/ DecodificarHttpUtility.UrlEncode/ DecodificarPuede agregar una referencia al
System.Webensamblaje 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.EscapeDataStringcodifica los caracteres '(' y ')' mientrasHttpUtility.UrlEncodeque 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 alServerobjeto. También puede usarSystem.Uri.EscapeUriString()para evitar agregar una referencia alSystem.Webensamblaje.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