Подтвердить что ты не робот

Unescape JavaScript escape() с использованием С#

Являются ли какие-либо функции в С#, которые обрабатывают escape/unescape, например JavaScript?

У меня есть строка JSON как это:

{"Feeds":[{"Url":"www.test.com","FeedType":"Twitter"},{"Url":"www.test2.com","FeedType":"Youtube"}]}

Что будет выглядеть после escape()

%7B%22Feeds%22%3A%5B%7B%22Url%22%3A%22www.test.com%22%2C%22FeedType%22%3A%22Twitter%22%7D%2C%7B%22Url%22%3A%22www.test2.com%22%2C%22FeedType%22%3A%22Youtube%22%7D%5D%7D

В моем коде С# я хотел бы удалить эту строку, чтобы она выглядела точно так же, как и до escape()

Возможно ли это?

4b9b3361

Ответ 2

escape() эквивалентно

HttpUtility.UrlDecode(str, System.Text.Encoding.Default);

По умолчанию UrlDecode использует UTF8, а escape() - нет.

Ответ 3

Это лучший способ найти работу с ними:

Кодировать в С#:

System.Uri.EscapeDataString("<string>");

Декодирование в JavaScript:

decodeURI("<string>");

Кодировать в JavaScript:

encodeURI("<string>");

Декодирование в С#:

System.Uri.UnescapeDataString("<string>");

Обновление 27 января-2016. Просто нашел, что похоже на более совместимый способ сделать это, который также кодирует URI-протокол (http://) с помощью javascript:

Кодировать в JavaScript:

encodeURIComponent("<string>");

Декодирование в JavaScript:

decodeURIComponent("<string>");

Ответ 4

Человек, почему мы слишком много думаем об этом. Когда функция API является глупой, отправьте карма-крик в разработчик библиотеки, затем обходите ее...

HttpUtility.UrlEncode(editext, System.Text.Encoding.Default).Replace("+","%20");

Ответ 5

    internal static string UnJavascriptEscape(string s)
    {
        // undo the effects of JavaScript escape function
        return HttpUtility.UrlDecode(s.Replace("+", "%2b"), Encoding.Default);
    }

Ответ 6

Чтобы unescape без необходимости ссылаться на System.Web, чтобы использовать HttpUtility, попробуйте следующее:

Str = Str.Replace("+", " ");
Str = Regex.Replace(Str, "%([A-Fa-f\\d]{2})", a => "" + Convert.ToChar(Convert.ToInt32(a.Groups[1].Value, 16)));

Кроме того, когда я пробовал HttpUtility.UrlDecode, он не работал для специальных символов & aacute; & eacute; & iacute; & oacute; & uacute; & ntilde;.

Ответ 7

Я потратил 8 часов, пытаясь получить

HttpUtility.UrlDecode 

чтобы работать, и отказался и использовал

HttpUtility.HtmlDecode

который работал мгновенно.