En JavaScript:¿Tiene C# un equivalente al encodeURIComponent() de JavaScript?
encodeURIComponent("©√") == "%C2%A9%E2%88%9A"
¿Hay un equivalente para las aplicaciones C#? Para escapar de caracteres HTML utilicé:
txtOut.Text = Regex.Replace(txtIn.Text, @"[\u0080-\uFFFF]",
m => @"&#" + ((int)m.Value[0]).ToString() + ";");
Pero no estoy seguro de cómo convertir el partido en el 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 tengo que dividir la cadena para arriba en bytes o algo
Editar: Se trata de una aplicación de Windows, el los elementos disponibles en System.Web
son:. AspNetHostingPermission
, AspNetHostingPermissionAttribute
y AspNetHostingPermissionLevel
El problema principal que tenía no era tener una referencia a System.Web en mi solución, pero no conocía EscapeUriString, ¡gracias! – travis
En contraste con encodeURIComponent(), Uri.EscapeUriString() no codifica "+" a "% 2b". Use Uri.EscapeDataString() en su lugar. – jwaliszko
@Steve Uri.EscapeDataString salvó nuestro día;) – InferOn