2012-03-15 2 views
2

Я использую WebUtility.HtmlDecode, чтобы попытаться декодировать строку, часть которой находится ниже:WebUtility.HtmlDecode не может декодировать строку

checkin=%7B%22id%22%3A%224f612730e4b071dd72e3749d%22%2C%22createdAt%22%3A1331767088%2C%22type%22%3A%22checkin%22%2C%22timeZone%22%3A%22America%5C%2FDenver%22%2C 

Но WebUtility.HtmlDecode не сможет расшифровать его, любой из него. В случае, если это имеет значение, вот как я генерации строки:

public static Dictionary<String, dynamic> DeserializeRequestStream(Stream requestStream, int contentLength) 
     { 
      requestStream.Position = 0; //Since a custom route with post data AND an ID passed in a parameter reads this stream. Damn bugs. 
      var bytes = new byte[contentLength]; 
      requestStream.Read(bytes, 0, contentLength); //(int)requestStream.Length - contentLength 
      var jsonResponse = System.Text.Encoding.UTF8.GetString(bytes, 0, bytes.Length); 
      var decodedResponse = WebUtility.HtmlEncode(jsonResponse); 
      //...snip... 
     } 

Это якобы закодированные данные в формате JSON, что я читаю из запроса POST. Как я могу декодировать эту строку для обычного JSON?

Редактировать: Lasse V. Karlsen указывает, что это на самом деле URL-код, и что я лаял неправильное дерево. Вопрос все еще остается: как бы я это расшифровать?

+3

'% 7B' * кодируется * URL *, а не * HTML *. Кодировка HTML имеет дело с амперсандами и т. П. –

ответ

6

Самое простое, что нужно сделать, это изменить HtmlDecode к UrlDecode.

Причина: Строка ввода checkin=%7B%22id%22%3A... кодируется URL, а не кодируется HTML.

+0

Спасибо! Я нашел этот метод и в Google. Отлично работает! –

Смежные вопросы