Обычно я просто использовал бы:
HttpContext.Current.Server.UrlEncode("url");
Но поскольку это консольное приложение, HttpContext.Current
всегда будет null
.
Есть ли другой метод, который делает то же самое, что я мог бы использовать?
Обычно я просто использовал бы:
HttpContext.Current.Server.UrlEncode("url");
Но поскольку это консольное приложение, HttpContext.Current
всегда будет null
.
Есть ли другой метод, который делает то же самое, что я мог бы использовать?
Попробуйте это!
Uri.EscapeUriString(url);
Не нужно ссылаться на System.Web.
Я не парень .NET, но вы не можете использовать:
HttpUtility.UrlEncode Method (String)
Что описано здесь:
Код от Яна Хопкинса делает трюк для меня, не добавляя ссылку на System.Web. Вот порт для С# для тех, кто не использует VB.NET:
/// <summary>
/// URL encoding class. Note: use at your own risk.
/// Written by: Ian Hopkins (http://www.lucidhelix.com)
/// Date: 2008-Dec-23
/// (Ported to C# by t3rse (http://www.t3rse.com))
/// </summary>
public class UrlHelper
{
public static string Encode(string str) {
var charClass = String.Format("0-9a-zA-Z{0}", Regex.Escape("-_.!~*'()"));
return Regex.Replace(str,
String.Format("[^{0}]", charClass),
new MatchEvaluator(EncodeEvaluator));
}
public static string EncodeEvaluator(Match match)
{
return (match.Value == " ")?"+" : String.Format("%{0:X2}", Convert.ToInt32(match.Value[0]));
}
public static string DecodeEvaluator(Match match) {
return Convert.ToChar(int.Parse(match.Value.Substring(1), System.Globalization.NumberStyles.HexNumber)).ToString();
}
public static string Decode(string str)
{
return Regex.Replace(str.Replace('+', ' '), "%[0-9a-zA-Z][0-9a-zA-Z]", new MatchEvaluator(DecodeEvaluator));
}
}
Вы хотите использовать
System.Web.HttpUtility.urlencode("url")
Убедитесь, что у вас есть system.web как одна из ссылок в вашем проекте. Я не думаю, что он включался в качестве ссылки по умолчанию в консольных приложениях.
Попробуйте использовать метод UrlEncode в классе HttpUtility.
Я столкнулся с этой проблемой сам, и вместо того, чтобы добавить сборку System.Web в свой проект, я написал класс для URL-адресов для кодирования/декодирования (довольно простой, и я провел некоторое тестирование, но не много), Я включил исходный код ниже. Пожалуйста: оставьте комментарий наверху, если вы повторно его используете, не обвиняйте меня, если он ломается, узнайте из кода.
''' <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
Kibbee предлагает реальный ответ. Да, HttpUtility.UrlEncode - правильный метод для использования, но он не будет доступен по умолчанию для консольного приложения. Вы должны добавить ссылку на System.Web. Для этого
СЕЙЧАС можно использовать метод UrlEncode. Вы по-прежнему хотите добавить,
с помощью System.Web
в верхней части консольного приложения или используйте полное пространство имен при вызове метода,
System.Web.HttpUtility.UrlEncode(SomeString)
HttpUtility.UrlEncode( "url" ) в System.Web.
используйте статический метод HttpUtility.UrlEncode.
Используйте WebUtility.UrlEncode(string)
из System.Net
пространства имен
Лучше всего добавить ссылку на System.web..dll
и используйте var EncodedUrl = System.Web.HttpUtility.UrlEncode( "URL_TEXT" );
Файл находится в System.web.dll