Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.12.2015, 17:54   #1
Notan1310
Форумчанин
 
Регистрация: 01.01.2012
Сообщений: 118
По умолчанию Ошибки с кодировкой при получении json c сайта

Всем привет. При получении json ответа отображается неправильная кодировка кириллицы.
Цитата:
["\u0420\u043e\u0441\u0441\u0438\u04 39\u0441\u043a\u0430\u044f \u0424\u0435\u0434\u0435\u0440\u043 0\u0446\u0438\u044f","\u0418\u043d\ u043e\u0441\u0442\u0440\u0430\u043d \u043d\u043e\u0435 \u0433\u043e\u0441\u0443\u0434\u043 0\u0440\u0441\u0442\u0432\u043e","\ u0421\u043b\u0435\u0434\u0443\u0435 \u0442 \u043a \u043c\u0435\u0441\u0442\u0443 \u0440\u0435\u0433\u0438\u0441\u044 2\u0440\u0430\u0446\u0438\u0438 \u0422\u0421"],"type":["\u041c\u043e\u0442\u043e\u0446\u04 38\u043a\u043b\u044b \u0438 \u043c\u043e\u0442\u043e\u0440\u043 e\u043b\u043b\u0435\u0440\u044b","\ u041b\u0435\u0433\u043a\u043e\u0432 \u044b\u0435 \u0430\/\u043c","\u041b\u0435\u0433\u043a\u 043e\u0432\u044b\u0435 \u0430\/\u043c, \u0438\u0441\u043f\u043e\u043b\u044 c\u0437\u0443\u0435\u043c\u044b\u04 35 \u0432 \u0442\u0430\u043a\u0441\u0438","\u 0413\u0440\u0443\u0437\u043e\u0432\ u044b\u0435 \u0430\/\u043c \u0441 \u0440\u0430\u0437\u0440\u0435\u044 8\u0435\u043d\u043d\u043e\u0439 \u043c\u0430\u0441\u0441\u043e\u043 9 \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();
           }
Проверил несколько вариантов, но изменении не было. Скажите пожалуйста где я не прав?

Последний раз редактировалось Stilet; 17.12.2015 в 22:48.
Notan1310 вне форума Ответить с цитированием
Старый 17.12.2015, 18:57   #2
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

а с какого ресурса то берете? где полный кусок кода?
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 17.12.2015, 19:04   #3
Notan1310
Форумчанин
 
Регистрация: 01.01.2012
Сообщений: 118
По умолчанию

Цитата:
Сообщение от WorldMaster Посмотреть сообщение
а с какого ресурса то берете?
Я делаю расчет через это api

Цитата:
Сообщение от WorldMaster Посмотреть сообщение
где полный кусок кода?
Кусок кода который я указал в первом посте и есть ответственный за получение ответа. Ответ приходит, но с bad кодировкой.
Notan1310 вне форума Ответить с цитированием
Старый 17.12.2015, 19:19   #4
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

URL в запросе напишите конкретный вот тут:
Код:
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("***");
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 17.12.2015, 19:28   #5
Notan1310
Форумчанин
 
Регистрация: 01.01.2012
Сообщений: 118
По умолчанию

Код:
 HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("https://pkasko.com/kasko/calc?api=1");
С ответом сервера все нормально, у меня кириллица неправильно отображается при дебаггинге в этом месте
Код:
json = sr.ReadToEnd();
Notan1310 вне форума Ответить с цитированием
Старый 17.12.2015, 19:53   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

http://programmersforum.ru/showthrea...71#post1556871
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 17.12.2015, 20:02   #7
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Вот так работает. Я ошибку получаю потом что регистрации нету. И нормально вся кирилица приходит.

Код:
 public class Data
        {
            public error error { get; set; }
        }

        public class error
        {
            public string message { get; set; }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("https://pkasko.com/auth/api?login=me@pkasko.com&password=123456");
            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";

            HttpWebResponse response = (HttpWebResponse)req.GetResponse();
            string json = String.Empty;

            using (StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.Default))
            {
                json = sr.ReadToEnd();

                Data jsonser = JsonConvert.DeserializeObject<Data>(json);
            }
        }
Изображения
Тип файла: jpg 1234.jpg (95.0 Кб, 175 просмотров)
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.

Последний раз редактировалось WorldMaster; 17.12.2015 в 20:05.
WorldMaster вне форума Ответить с цитированием
Старый 18.12.2015, 05:41   #8
Notan1310
Форумчанин
 
Регистрация: 01.01.2012
Сообщений: 118
По умолчанию

Всем спасибо! Все стало корректно отображаться после следующего участка кода

Код:
json = Regex.Replace(json, @"\\u([0-9A-Fa-f]{4})", m => ""+(char)Convert.ToInt32(m.Groups[1].Value, 16));
WorldMaster, Спасибо! Но у меня эти ответы тоже нормальными приходят, именно при расчете в теле json было такое \u0420\
Alex11223, не могу оценить помощь в теме в который раз

На словах спасибо!

Последний раз редактировалось Notan1310; 18.12.2015 в 05:56.
Notan1310 вне форума Ответить с цитированием
Старый 18.12.2015, 10:52   #9
come-on
Участник клуба
 
Регистрация: 21.10.2015
Сообщений: 1,361
По умолчанию

System.Web.HttpUtility.HtmlDecode(j son)

РоссийскаяФедерация ....

http://www.cyberforum.ru/csharp-begi...ad1616863.html
come-on вне форума Ответить с цитированием
Старый 18.12.2015, 11:05   #10
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а хорошо ли ради одной функции привязываться к ASP.NET сборке?
просто в .NET 4 CP ее нет.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[UDP]Виснет при получении пакета Crossfire Работа с сетью в Delphi 1 23.04.2014 22:24
Кодировка при получении данных из WEB Никки Общие вопросы по Java, Java SE, Kotlin 3 28.12.2013 19:17
ошибка при получении данных Lkon Microsoft Office Excel 4 22.02.2012 00:02
Иероглифы при получении СМС RIO Работа с сетью в Delphi 0 30.07.2010 00:04
при получении из внешних данных segail Microsoft Office Excel 4 03.04.2010 16:03