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