Me encontré con este problema yo mismo, y en lugar de agregar el ensamblado System.Web a mi proyecto, escribí una clase para codificar/descodificar URL (es bastante simple, y he hecho algunas pruebas, pero no mucho) He incluido el código fuente a continuación. Por favor: deja el comentario en la parte superior si vuelves a usar esto, no me culpes si se rompe, aprende del código.
''' <summary>
''' URL encoding class. Note: use at your own risk.
''' Written by: Ian Hopkins (http://www.lucidhelix.com)
''' Date: 2008-Dec-23
''' </summary>
Public Class UrlHelper
Public Shared Function Encode(ByVal str As String) As String
Dim charClass = String.Format("0-9a-zA-Z{0}", Regex.Escape("-_.!~*'()"))
Dim pattern = String.Format("[^{0}]", charClass)
Dim evaluator As New MatchEvaluator(AddressOf EncodeEvaluator)
' replace the encoded characters
Return Regex.Replace(str, pattern, evaluator)
End Function
Private Shared Function EncodeEvaluator(ByVal match As Match) As String
' Replace the " "s with "+"s
If (match.Value = " ") Then
Return "+"
End If
Return String.Format("%{0:X2}", Convert.ToInt32(match.Value.Chars(0)))
End Function
Public Shared Function Decode(ByVal str As String) As String
Dim evaluator As New MatchEvaluator(AddressOf DecodeEvaluator)
' Replace the "+"s with " "s
str = str.Replace("+"c, " "c)
' Replace the encoded characters
Return Regex.Replace(str, "%[0-9a-zA-Z][0-9a-zA-Z]", evaluator)
End Function
Private Shared Function DecodeEvaluator(ByVal match As Match) As String
Return "" + Convert.ToChar(Integer.Parse(match.Value.Substring(1), System.Globalization.NumberStyles.HexNumber))
End Function
End Class
No estoy seguro de por qué se votó negativamente; tal vez la edición solucionó algo? De todos modos, es una buena respuesta. Para obtener más información, consulte [esta respuesta] (http://stackoverflow.com/a/8451941/530545) de otra pregunta similar. – Granger
Funciona muy bien y no necesita agregar ninguna referencia. –
gracias por proporcionar una respuesta, no una respuesta NO. – sonjz