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

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

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

Всем привет. При получении 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
Вот как получаю эти данные
           HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("***");
           req.ContentType = @"text/xml;charset=""utf-8""";
 
           req.Headers.Add(String.Format("X-Authorization: {0}", api_key));
           req.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
 
           string jsonser = String.Empty;

           jsonser = JsonConvert.SerializeObject(product);

           byte[] dataStream = Encoding.UTF8.GetBytes(jsonser);
 
           req.ContentLength = dataStream.Length;
 
           req.Method = WebRequestMethods.Http.Post;
 
           Stream Stream = req.GetRequestStream();
           Stream.Write(dataStream, 0, dataStream.Length);
           Stream.Close();
           HttpWebResponse response = (HttpWebResponse)req.GetResponse();
           string json = String.Empty;
 
           using (StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.Default))
           {
               json = sr.ReadToEnd();
           }
Проверил несколько вариантов, но изменении не было. Скажите пожалуйста где я не прав?

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

textual
Листинг программы
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";
json = Regex.Replace(json, @"\\u([0-9A-Fa-f]{4})", m => ""+(char)Convert.ToInt32(m.Groups[1].Value, 16));

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


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

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

6   голосов , оценка 4 из 5
Похожие ответы