На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
  
> Распознавание кодировке , узнать, в какой получена страница
    Добрый день.
    Качаю страницу таким образом
    ExpandedWrap disabled
                      HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://" + domain);
                      request.Headers.Add(HttpRequestHeader.AcceptCharset, "windows-1251");
                      HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                      Stream receiveStream = response.GetResponseStream();
                      StreamReader readStream = new StreamReader(receiveStream, Encoding.GetEncoding("windows-1251"));
                      string result = readStream.ReadToEnd();
                      readStream.Close();
                      receiveStream.Close();

    Естественно, что страница не всегда возвращается в кодировке win1251.
    как можно распознать кодировку и сохранить в переменную распознанную разметку?
      во первых не пиши явно в какой кодировке хочешь получить, потому как данные могут прийти в другой и он неправильно их обработает
      а во вторых
      попробуй так
      ExpandedWrap disabled
        Stream receiveStream = response.GetResponseStream();
        StreamReader readStream = new StreamReader(receiveStream,);
        string result = readStream.ReadToEnd();
        readStream.CurrentEncoding //получаю кодировку
        readStream.Close();
        //receiveStream.Close(); -- это не нужно он закроется предыдущим
      Сообщение отредактировано: Mr_Smith -
        Mr_Smith, мне нужно прочитать поток в заданной кодировке, а тут он читается в кодировке по умолчанию.. здесь, например, если кодировка utf8, то русские вимволы просто отсутствуют, получается что-то типа
        ExpandedWrap disabled
           -  ,   - ,   - ,  , PR,    ,  ,  , ,  ,

        а должно быть
        ExpandedWrap disabled
          Интернет - наша профессия, Центр Веб - решений, Разработка интернет - решений, Корпоративный сайт, PR, Рекламные кампании в интернете, Поддержка сайта, Развитие сайтов, Хостинг, Консалтинговые услуги, Иркутские ведущие компании
          HttpWebResponse.ContentEncoding
            Цитата ANDLL @
            HttpWebResponse.ContentEncoding

            там содержится пустая строка.

            Ок.. задачу можно немного изменить.. закачиваю страницу через WebClient вот так..
            ExpandedWrap disabled
                              WebClient wc = new WebClient();
                              wc.DownloadFile(domain, fileName);
                              byte[] b = File.ReadAllBytes(fileName);

            теперь как мне узнать кодировку? и занести в строку через GetString? :unsure:
              GarF1eld: постучись в понедельник ко мне, на работе где-то был кусок кода, который анализирует кусок текста :) и пытается вычислить кодировку... чё-то есть уже готового у микрософта...
                Цитата Budda @
                GarF1eld: постучись в понедельник ко мне, на работе где-то был кусок кода, который анализирует кусок текста :) и пытается вычислить кодировку... чё-то есть уже готового у микрософта...

                в принципе, проблему обошел... но буду благодарен за код :)
                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                0 пользователей:


                Рейтинг@Mail.ru
                [ Script execution time: 0,0350 ]   [ 17 queries used ]   [ Generated: 29.03.24, 07:20 GMT ]