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

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

【问题讨论】:

    标签: c# winforms url encode


    【解决方案1】:

    【讨论】:

      【解决方案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() ,则并非所有字符都会被编码。在这一点上,我最好考虑变音符号,例如,您可以在德语中找到它。
      猜你喜欢
      • 1970-01-01
      • 2013-04-02
      • 2013-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-23
      • 2011-04-13
      • 2014-03-27
      相关资源
      最近更新 更多