Как заменить специальные символы в URL? - PullRequest
15 голосов
/ 10 февраля 2009

Это, наверное, очень просто, но я просто не могу найти ответ сам :(

По сути, я хочу получить следующую строку:

"http://www.google.com/search?hl=en&q=c# объектов"

Я хочу этот вывод:

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

Я уверен, что где-то в Framework похоронен какой-то вспомогательный класс, который позаботится об этом для меня, но мне трудно его найти.

РЕДАКТИРОВАТЬ: я должен добавить, что это для приложения Winforms.

Ответы [ 4 ]

15 голосов
/ 10 февраля 2009

HttpServerUtility.UrlEncode (строка)

Нужно разобраться с неприятными персонажами

Чтобы использовать его, вам нужно добавить ссылку на System.Web (Project Explorer> Ссылки> Добавить ссылку> System.Web)

Как только вы это сделаете, вы можете использовать его для кодирования любых элементов, которые вы хотите добавить в строку запроса:

System.Web.HttpUtility.UrlEncode("c# objects");
12 голосов
/ 28 января 2011

Если вы не хотите зависеть от System.Web, здесь есть реализация «UrlEncode», которую я имею в моей библиотеке C # OAuth (которая требует правильной реализации - а именно пробелы должны кодироваться с использованием процентного кодирования, а не «+»). для пробелов и т. д.)

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

9 голосов
/ 23 февраля 2009

@ Уилфред Нивель получил принятый ответ, но вы также можете использовать Uri.EscapeUriString(), если хотите избежать зависимости от пространства имен System.Web.

6 голосов
/ 10 февраля 2009

Посмотрите на Server.UrlEncode

http://msdn.microsoft.com/en-us/library/ms525738.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...