【问题标题】:How do I replace special characters in a URL?如何替换 URL 中的特殊字符?
【发布时间】:2010-10-06 17:16:36
【问题描述】:

这可能很简单,但我自己根本找不到答案:(

基本上,我想要的是,给定这个字符串:

http://www.google.com/search?hl=en&q=c#对象”

我想要这个输出:

http://www.google.com/search?hl=en&q=c%23+objects

我确信框架中的某个地方有一些帮助程序类可以为我处理这个问题,但我很难找到它。

编辑:我应该补充一点,这是针对 Winforms 应用程序的。

【问题讨论】:

  • 这里似乎有些不对劲。你在哪里得到一个没有你的查询值被转义的 URL?如果您自己构建 URL,则应该转义查询值(“en”和“c# objects”),然后将它们连接到 URL。

标签: c# url encoding


【解决方案1】:

【讨论】:

  • 您应该仍然能够引用相关库来执行该编码操作。
【解决方案2】:

HttpServerUtility.UrlEncode(字符串)

应该整理出任何麻烦的字符

要使用它,您需要添加对 System.Web 的引用(Project Explorer > References > Add reference > System.Web)

完成后,您可以使用它对您希望添加到查询字符串的任何项目进行编码:

System.Web.HttpUtility.UrlEncode("c# objects");

【讨论】:

  • 该死的 58 秒太慢了,是时候突破 Mavis Beacon 了! ;-)
  • 嗯不知道这个。 :)
  • 谢谢威尔弗雷德..我也不在乎这个:)
  • 能否只添加对 System.Web 的引用(项目资源管理器 > 引用 > 添加引用 > System.Web),然后使用 System.Web.HttpUtility.UrlEncode("c# objects");跨度>
  • 我最初认为它不起作用的原因是因为我正在做 HttpUtility.UrlEncode("google.com/search?hl=en&q=c#objects") 这给了我:“http%3a%2f%2fwww.google。 com%2fsearch%3fhl%3den%26q%3dc%23+对象”。您的编辑虽然向我展示了如何使用它。谢谢!完美运行。
【解决方案3】:

@Wilfred Knievel 有公认的答案,但如果您想避免对 System.Web 命名空间的依赖,也可以使用 Uri.EscapeUriString()

【讨论】:

  • 如果您只使用 .net 客户端,最好的解决方案。
  • 此选项非常适合仅编码特殊字符(如重音)而不是所有字符(如斜杠或冒号)。
【解决方案4】:

如果您不想依赖 System.Web,这里是我在 C# OAuth 库中的“UrlEncode”实现(它需要正确的实现 - 即应该使用百分比编码而不是“+”对空格进行编码用于空格等)

private readonly static string reservedCharacters = "!*'();:@&=+$,/?%#[]";

public static string UrlEncode(string value)
{
    if (String.IsNullOrEmpty(value))
        return String.Empty;

    var sb = new StringBuilder();

    foreach (char @char in value)
    {
        if (reservedCharacters.IndexOf(@char) == -1)
            sb.Append(@char);
        else
            sb.AppendFormat("%{0:X2}", (int)@char);
    }
    return sb.ToString();
}

供参考 http://en.wikipedia.org/wiki/Percent-encoding

【讨论】:

  • 好!与 System.Web 中的方法不同,它还对特殊字符进行编码。 (必须在保留字符列表中添加“-”)
  • 空格呢?它们没有按应有的方式编码为 %20。
猜你喜欢
  • 1970-01-01
  • 2021-09-20
  • 1970-01-01
  • 2011-05-16
  • 2013-01-14
  • 1970-01-01
  • 2014-11-03
  • 2011-12-28
相关资源
最近更新 更多