【问题标题】:Server.UrlEncode vs Uri.EscapeDataStringServer.UrlEncode 与 Uri.EscapeDataString
【发布时间】:2010-08-26 05:01:25
【问题描述】:

这两个函数到底有什么区别。除了Uri.EscapeUriString 将空格编码为%20Server.UrlEncode 将它们编码为+ 符号之外,输出看起来相似。

最后一个问题应该优先使用

【问题讨论】:

  • 请注意,在标题中,OP 询问了Uri.EscapeDataString,而在问题中他询问了Uri.EscapeUriString,它们是等价的。
  • 我发布了一个相关问题here 的详细答案,事后看来它可能更适合这个问题,尽管我不想重复发布,所以希望在这里链接到它就足够了。
  • 根据stackoverflow.com/a/47877559/579763使用WebUtility.UrlEncode
  • 我发现 HttpUtility.UrlEncode 不会将感叹号更改为 %21 但 ri.EscapeDataString 会!

标签: .net encoding


【解决方案1】:

如果以后有人遇到这种情况:

经过一番挖掘,我发现Uri.EscapeDataString 是更好的选择。查看投票最高的答案 herethis 帖子。

编辑:在此处添加来自第二个链接的信息:

我们发现在某些情况下您需要考虑使用 Uri.EscapeDataString。在我们的例子中,我们正在加密查询字符串,并发现 UrlDecode 正在将加号 (+) 转换为空格。这导致我们在解密过程中出错。在 URL 中构造自定义查询字符串时,使用 Uri 的 Escape 和 UnescapeDataString 对我们来说很有意义。

【讨论】:

  • 您可以在长字符串上获得 System.UriFormatException
【解决方案2】:

我发现HttpUtility.UrlEncode 可以容忍null 字符串和长字符串。它在 .NET Core 和 .NET Framework 中都可用。

【讨论】:

    猜你喜欢
    • 2010-10-10
    • 2014-09-17
    • 2014-10-08
    • 2011-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-09
    • 2011-03-28
    相关资源
    最近更新 更多