How do I replace special characters in a URL?

2020-05-23 03:35发布

This is probably very simple, but I simply cannot find the answer myself :(

Basicaly, what I want is, given this string:

"http://www.google.com/search?hl=en&q=c# objects"

I want this output:

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

I'm sure there's some helper class somewhere buried in the Framework that takes care of that for me, but I'm having trouble finding it.

EDIT: I should add, that this is for a Winforms App.

标签: c# url encoding
4条回答
成全新的幸福
2楼-- · 2020-05-23 03:46

If you don't want a dependency on System.Web here is an implementation of "UrlEncode" I have in my C# OAuth Library (which requires a correct implementation - namely spaces should be encoded using percent encoding rather the "+" for spaces etc.)

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();
}

For reference http://en.wikipedia.org/wiki/Percent-encoding

查看更多
男人必须洒脱
3楼-- · 2020-05-23 03:50

@Wilfred Knievel has the accepted answer, but you could also use Uri.EscapeUriString() if you wanted to avoid the dependency on the System.Web namespace.

查看更多
做个烂人
4楼-- · 2020-05-23 03:52
女痞
5楼-- · 2020-05-23 04:01

HttpServerUtility.UrlEncode(string)

Should sort out any troublesome characters

To use it you'll need to add a reference to System.Web (Project Explorer > References > Add reference > System.Web)

Once you've done that you can use it to encode any items you wish to add to the querystring:

System.Web.HttpUtility.UrlEncode("c# objects");
查看更多
登录 后发表回答