UrlEncode通过控制台应用程序?

通常我只会使用:

HttpContext.Current.Server.UrlEncode("url"); 

但是由于这是一个控制台应用程序, HttpContext.Current总是会为null

还有另一种方法可以做同样的事情吗?

尝试这个!

 Uri.EscapeUriString(url); 

无需引用System.Web。

我不是一个.NET的人,但是,你不能使用:

 HttpUtility.UrlEncode Method (String) 

这里描述的是:

在MSDN上的HttpUtility.UrlEncode方法(string)

伊恩·霍普金斯的代码为我做了窍门,而不必添加对System.Web的引用。 对于那些不使用VB.NET的人来说,这里是C#的端口:

 /// <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是你的项目中的一个参考。 我不认为它是包含在控制台应用程序默认的参考。

尝试在HttpUtility类中使用UrlEncode方法。

  1. http://msdn.microsoft.com/en-us/library/system.web.httputility.urlencode.aspx

我自己遇到了这个问题,而不是将System.Web程序集添加到我的项目中,我编写了一个编码/解码URL的类(它非常简单,我做了一些testing,但不是很多)。 我已经包含了下面的源代码。 请:如果你重复使用这个,请把评论留在最上面,如果它破坏了,不要怪我,从代码中学习。

 ''' <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的引用。 要做到这一点,

  1. 在解决scheme资源pipe理器中,右键单击引用
  2. select“添加参考”
  3. 在“添加引用”对话框中,使用.NET选项卡
  4. 向下滚动到System.Web,select它,然后点击确定

现在你可以使用UrlEncode方法。 你仍然想要添加,

使用System.Web

在控制台应用程序的顶部,或在调用方法时使用完整的名称空间,

System.Web.HttpUtility.UrlEncode(someString)

System.Web中的HttpUtility.UrlEncode(“url”)。

使用静态的HttpUtility.UrlEncode方法。

使用来自System.Net命名空间的WebUtility.UrlEncode(string)

最好的事情是添加引用到System.web.dll

并使用var EncodedUrl = System.Web.HttpUtility.UrlEncode(“URL_TEXT”);

您可以在System.web.dll中find该文件