Ошибки с кодировкой при получении json c сайта - C#

Узнай цену своей работы

Формулировка задачи:

Всем привет. При получении json ответа отображается неправильная кодировка кириллицы.
Листинг программы
  1. ["\u0420\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u0430\u044f \u0424\u0435\u0434\u0435\u0440\u0430\u0446\u0438\u044f","\u0418\u043d\u043e\u0441\u0442\u0440\u0430\u043d\u043d\u043e\u0435 \u0433\u043e\u0441\u0443\u0434\u0430\u0440\u0441\u0442\u0432\u043e","\u0421\u043b\u0435\u0434\u0443\u0435\u0442 \u043a \u043c\u0435\u0441\u0442\u0443 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0422\u0421"],"type":["\u041c\u043e\u0442\u043e\u0446\u0438\u043a\u043b\u044b \u0438 \u043c\u043e\u0442\u043e\u0440\u043e\u043b\u043b\u0435\u0440\u044b","\u041b\u0435\u0433\u043a\u043e\u0432\u044b\u0435 \u0430\/\u043c","\u041b\u0435\u0433\u043a\u043e\u0432\u044b\u0435 \u0430\/\u043c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u0432 \u0442\u0430\u043a\u0441\u0438","\u0413\u0440\u0443\u0437\u043e\u0432\u044b\u0435 \u0430\/\u043c \u0441 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043d\u043e\u0439 \u043c\u0430\u0441\u0441\u043e\u0439 \u0434\u043e 16 \u0442 \u0432\u043a\u043b.","\u0413\u0440\u0443\u0437\u043e\u0432\u044b\u0435 \u0430\/\u043c \u0441 \u0440\u0430\u0437
Вот как получаю эти данные
Листинг программы
  1. HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("***");
  2. req.ContentType = @"text/xml;charset=""utf-8""";
  3. req.Headers.Add(String.Format("X-Authorization: {0}", api_key));
  4. req.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
  5. string jsonser = String.Empty;
  6.  
  7. jsonser = JsonConvert.SerializeObject(product);
  8.  
  9. byte[] dataStream = Encoding.UTF8.GetBytes(jsonser);
  10. req.ContentLength = dataStream.Length;
  11. req.Method = WebRequestMethods.Http.Post;
  12. Stream Stream = req.GetRequestStream();
  13. Stream.Write(dataStream, 0, dataStream.Length);
  14. Stream.Close();
  15. HttpWebResponse response = (HttpWebResponse)req.GetResponse();
  16. string json = String.Empty;
  17. using (StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.Default))
  18. {
  19. json = sr.ReadToEnd();
  20. }
Проверил несколько вариантов, но изменении не было. Скажите пожалуйста где я не прав?

Решение задачи: «Ошибки с кодировкой при получении json c сайта»

textual
Листинг программы
  1. string json = @"[""\u0420\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u0430\u044f \u0424\u0435\u0434\u0435\u0440\u0430\u0446\u0438\u044f"",""\u0418\u043d\u043e\u0441\u0442\u0440\u0430\u043d\u043d\u043e\u0435 \u0433\u043e\u0441\u0443\u0434\u0430\u0440\u0441\u0442\u0432\u043e"",""\u0421\u043b\u0435\u0434\u0443\u0435\u0442 \u043a \u043c\u0435\u0441\u0442\u0443 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0422\u0421""],""type"":[""\u041c\u043e\u0442\u043e\u0446\u0438\u043a\u043b\u044b \u0438 \u043c\u043e\u0442\u043e\u0440\u043e\u043b\u043b\u0435\u0440\u044b"",""\u041b\u0435\u0433\u043a\u043e\u0432\u044b\u0435 \u0430\/\u043c"",""\u041b\u0435\u0433\u043a\u043e\u0432\u044b\u0435 \u0430\/\u043c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u0432 \u0442\u0430\u043a\u0441\u0438"",""\u0413\u0440\u0443\u0437\u043e\u0432\u044b\u0435 \u0430\/\u043c \u0441 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043d\u043e\u0439 \u043c\u0430\u0441\u0441\u043e\u0439 \u0434\u043e 16 \u0442 \u0432\u043a\u043b."",""\u0413\u0440\u0443\u0437\u043e\u0432\u044b\u0435 \u0430\/\u043c \u0441 \u0440\u0430\u0437";
  2. json = Regex.Replace(json, @"\\u([0-9A-Fa-f]{4})", m => ""+(char)Convert.ToInt32(m.Groups[1].Value, 16));

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы