C# 如何在WinForms中编码URL?

C# 如何在WinForms中编码URL?,c#,winforms,url,encode,C#,Winforms,Url,Encode,我正在创建一个Windows应用程序,需要传递一个编码的URL。但我不确定如何在WinForms C#?中对其进行编码。如果您需要对查询字符串的数据进行URL编码,可以使用或,如果您不介意引用System.Web,: 它们非常相似,但在特殊字符(如空格)的编码方式上会产生微妙的不同结果: Console.WriteLine(uriEncoded); // uriEncoded = "this%20%26%20that" Console.WriteLine(httpUtilityEncoded)

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

中对其进行编码。如果您需要对查询字符串的数据进行URL编码,可以使用或,如果您不介意引用System.Web,:

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

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

Console.WriteLine(httpUtilityEncoded);
// httpUtilityEncoded = "this+%26+that"
您是否尝试过:

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

您不需要依赖System.Web,您可以在PCL中使用它,我在Xamarin forms项目中使用了它。

更新:如果您无法从System.Web访问HttpUtility类,则意味着它将被WebUtility替换。如果您创建
UriBuilder
类,将编码字符串附加到
UriBuilder中,则AppendFormat
编码值将位于Builder.Uri.AbsoluteUri字段中。如果在UriBuilder类上使用.ToString(),则并非所有字符都将被编码。在这一点上,我最好考虑一下umlauts,比如你可以在德语中找到它。。。如果大于32768,则必须使用
HttpUtility.UrlEncode
var url = System.Net.WebUtility.UrlEncode(string);