Ошибки с кодировкой при получении 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));
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д