如何在 WinForms 中对 URL 进行编码?

Posted

技术标签:

【中文标题】如何在 WinForms 中对 URL 进行编码?【英文标题】:How to encode a URL in WinForms? 【发布时间】:2011-08-30 01:46:27 【问题描述】:

我正在创建一个 Windows 应用程序,我需要传递一个编码的 URL。但我不确定如何在 WinForms C# 中对其进行编码?

【问题讨论】:

【参考方案1】:

试试Uri.EscapeUriString()

【讨论】:

【参考方案2】:

如果您需要对查询字符串的数据进行 URL 编码,可以使用 Uri.EscapeDataString,或者如果您不介意引用 System.Web,则可以使用 HttpUtility.UrlEncode:

var rawString = @"this & that";
var uriEncoded = Uri.EscapeDataString(rawString);
var httpUtilityEncoded = HttpUtility.UrlEncode(rawString);

它们非常相似,但在特殊字符(如空格)的编码方式上会产生细微的不同结果:

Console.WriteLine(uriEncoded);
// uriEncoded = "this%20%26%20that"

Console.WriteLine(httpUtilityEncoded);
// httpUtilityEncoded = "this+%26+that"

【讨论】:

您必须注意要进行 URL 编码的字符串的长度...如果大于 32768,您必须使用 HttpUtility.UrlEncode【参考方案3】:

你试过了吗:

var url = System.Net.WebUtility.UrlEncode(string);

您不需要对 System.Web 的依赖,您可以在 PCL 中使用它,我在我的 Xamarin 表单项目中使用它。

【讨论】:

更新:如果您无法从 System.Web 访问 HttpUtility 类,则意味着它已被 WebUtility 取代。如果您创建 UriBuilder 类,并在其中附加带有 UriBuilder.AppendFormatencoded 值的编码字符串,则将在 Builder.Uri.AbsoluteUri 字段中。如果您在 UriBuilder 类上说 .ToString() ,则并非所有字符都会被编码。在这一点上,我最好考虑变音符号,例如,您可以在德语中找到它。

以上是关于如何在 WinForms 中对 URL 进行编码?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Excel VBA 中对字符串进行 URL 编码?

如何正确地在 PHP 中对字符串进行 URL 编码?

在 bash 脚本中对字符串进行 URL 编码

为 AJAX 请求在 jQuery 中对字符串进行 URL 编码

有没有办法从多个 URL 生成 Web 查询,而无需在 Excel 中对值进行硬编码?

在 WinForms 中对一组单选按钮进行数据绑定的最佳方法