如何替换URL中的特殊字符?

时间:2009-02-10 18:25:55

标签: c# url encoding

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

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

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

我想要这个输出:

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

我确信在框架中埋藏了一些辅助类,它可以解决这个问题,但是我找不到它。

编辑:我应该补充一点,这是针对Winforms App。

4 个答案:

答案 0 :(得分:15)

HttpServerUtility.UrlEncode(字符串)

应该解决任何麻烦的角色

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

完成后,您可以使用它来编码要添加到查询字符串的任何项目:

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

答案 1 :(得分:12)

如果你不想依赖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

答案 2 :(得分:9)

@Wilfred Knievel已接受答案,但如果您想避免依赖Uri.EscapeUriString()命名空间,也可以使用System.Web

答案 3 :(得分:6)