通过控制台应用程序进行Url编码?

12 浏览
0 Comments

通过控制台应用程序进行Url编码?

通常我会使用以下代码来进行 URL 编码:

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

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

是否有其他可以完成相同功能的方法可以使用?

0
0 Comments

这段代码是一个URL编码类,用于将字符串进行URL编码。它通过正则表达式匹配字符串中的特殊字符,并将其替换为URL编码格式。这段代码的原作者是Ian Hopkins,在2008年12月23日编写的。在这段代码中,作者使用了System.Web命名空间中的HttpUtility.UrlEncode方法来进行URL编码。然而,有些情况下,我们可能无法直接引用System.Web命名空间,例如在使用WPF应用程序时,因为WPF应用程序使用的是.NET的精简版'client profile',而不是完整版。因此,如果我们想在WPF应用程序中使用URL编码,就需要自己实现一个URL编码类。

为了解决这个问题,有人根据Ian Hopkins的代码将其转换成了C#版本。这个C#版本的代码没有使用System.Web命名空间中的HttpUtility.UrlEncode方法,而是通过正则表达式和字符串替换来实现URL编码。这样做的好处是不需要引用System.Web命名空间,从而可以在任何.NET应用程序中使用URL编码。这个C#版本的代码中,作者定义了一个UrlHelper类,并在该类中实现了Encode和Decode两个方法,分别用于URL编码和解码。其中,Encode方法使用正则表达式将特殊字符替换为URL编码格式,Decode方法则使用正则表达式和字符串替换将URL编码格式还原为原始字符串。

通过这个C#版本的代码,我们可以在不引用System.Web命名空间的情况下实现URL编码和解码。这对于那些使用WPF应用程序或其他.NET应用程序的开发人员来说是非常有用的。感谢t3rse和Ian Hopkins的工作,他们的代码解决了这个问题,并为我们提供了一种不依赖于System.Web命名空间的URL编码解决方案。

0
0 Comments

问题出现的原因是在使用HttpUtility.UrlEncode方法时,无法找到该方法的可见性。即使在代码中包含了"using System.Web",也无法使用该方法。需要将System.Web添加为引用。

解决方法是添加System.Web作为引用。只是简单地使用"using System.Web"是不够的。可以通过更改目标框架来不使用客户端配置文件,或者使用页面上t3rse提供的C#示例来解决该问题。

以下是问题出现的原因和解决方法的整理:

在使用HttpUtility.UrlEncode方法时,无法找到方法的可见性。即使在代码中包含了"using System.Web",也无法使用该方法。需要将System.Web添加为引用。

解决方法是添加System.Web作为引用。只是简单地使用"using System.Web"是不够的。可以通过更改目标框架来不使用客户端配置文件,或者使用页面上t3rse提供的C#示例来解决该问题。

请注意,如果您想要使用HttpUtility.UrlEncode方法,您需要将System.Web添加为引用。

0
0 Comments

问题的原因是在控制台应用程序中使用UrlEncode时,需要引用System.Web,但是这样会增加不必要的引用。解决方法是使用Uri类的EscapeUriString或EscapeDataString方法,不需要引用System.Web。

以下是解决方法的具体代码:

Uri.EscapeUriString(url);

Uri.EscapeDataString(data);

这两种方法都不需要引用System.Web,可以直接在控制台应用程序中使用。

需要注意的是,这两种方法不同于HttpUtility.UrlEncode方法,因为它们的编码结果完全不同。如果需要进行URL编码,应该使用HttpUtility.UrlEncode或Uri.EscapeDataString方法。

更多关于这个问题的信息,请参考这个Stack Overflow回答和这个Stack Overflow回答

0