net example .net url

.net - example - Decode escapó Url sin usar HttpUtility.UrlDecode



.net url encoder (7)

¿Hay alguna función que convierta una cadena Url escapada a su forma no escapada? System.Web.HttpUtility.UrlDecode() puede hacer ese trabajo, pero no quiero agregar una referencia a System.Web.dll . Como mi aplicación no es una aplicación web, no deseo agregar una dependencia solo para usar una función en un ensamblaje.

ACTUALIZACIÓN: Consulte la publicación de blog de Rick Strahl sobre el mismo problema.


@Herrero
Estaba teniendo el problema de guardar. Sin cambios o más confusión.

Después de probar muchas cosas, noté que una cadena de prueba decodificó. Finalmente tuve que crear una nueva cadena vacía, establecer su valor para la cadena codificada y luego ejecutar WebUtility.HtmlDecode y Uri.UnescapeDataString en la nueva cadena. Por alguna razón, tuve que ejecutar la decodificación y el escape en el orden que mencioné. Extraño.

Lo resolví con algo como esto.

Dim strEncoded as string="http%3a%2f%2fwww.google.com%2fsearch%3fhl%3den%26q%3dsomething%20%2323%26btnG%3dGoogle%2bSearch%26aq%3df%26oq%3d" Dim strDecoded as string = "" strDecoded = strEncoded strDecoded = WebUtility.HtmlDecode(strDecoded) strDecoded = Uri.UnescapeDataString(strDecoded)


El equipo de Microsoft ACE tiene una versión extendida (y mejor) de decodificación, en la biblioteca Anti-XSS . Sin embargo, no estoy seguro si solo pasa.

(No veo por qué estás tan preocupado por la dependencia de System.web.dll para ser honesto)


No cargando System.Web.dll: como otros han notado, no vale la pena entusiasmarse a menos que sepa que debe tratar con clientes que podrían no tenerlo ("perfil de cliente", "marco compacto", "micro framework"). "," silverlight ").

Re espacio; no será mucho realmente; tenga en cuenta que los ensamblados .NET están JITted método por método, por lo que no habrá una sobrecarga significativa solo por usar algunos métodos.

El problema real (IMO) es su nivel de confianza de que el cliente tiene System.Web.dll; si está contento de que estén usando el marco completo, entonces solo haga lo posible.



Ya tiene una ENORME dependencia del .NET framework, CLR etal. Entonces, de hecho, usted ya tiene una dependencia indirecta de System.Web.DLL; su aplicación NO PUEDE EJECUTAR sin su presencia en la máquina local.

¿Y te preocupa la memoria? ¿Tienes problemas de memoria? Si tiene problemas de memoria tan extremos que no puede cargar un par de KB de DLL en la memoria de su aplicación, ¿por qué está codificando .NET? ¿O solo estás optimizando prematuramente?

Entonces no te preocupes por eso


System.Net.WebUtility.HtmlDecode también está trabajando en .NET 4.0 Client Profile.


EDITAR: use el método estático Uri.UnescapeDataString() para decodificar sus URL:

Encoded: http%3a%2f%2fwww.google.com%2fsearch%3fhl%3den%26q%3dsomething%20%2323%26btnG%3dGoogle%2bSearch%26aq%3df%26oq%3d

Decodificado: http://www.google.com/search?hl=en&q=something #23&btnG=Google+Search&aq=f&oq=