Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.RU > .NET: Web приложения > Распознавание кодировке


Автор: GarF1eld 22.11.07, 07:48
Добрый день.
Качаю страницу таким образом
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
                    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.
как можно распознать кодировку и сохранить в переменную распознанную разметку?

Автор: Mr_Smith 22.11.07, 09:01
во первых не пиши явно в какой кодировке хочешь получить, потому как данные могут прийти в другой и он неправильно их обработает
а во вторых
попробуй так
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    Stream receiveStream = response.GetResponseStream();
    StreamReader readStream = new StreamReader(receiveStream,);
    string result = readStream.ReadToEnd();
    readStream.CurrentEncoding //получаю кодировку
    readStream.Close();
    //receiveStream.Close(); -- это не нужно он закроется предыдущим

Автор: GarF1eld 22.11.07, 16:58
Mr_Smith, мне нужно прочитать поток в заданной кодировке, а тут он читается в кодировке по умолчанию.. здесь, например, если кодировка utf8, то русские вимволы просто отсутствуют, получается что-то типа
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
     -  ,   - ,   - ,  , PR,    ,  ,  , ,  ,

а должно быть
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    Интернет - наша профессия, Центр Веб - решений, Разработка интернет - решений, Корпоративный сайт, PR, Рекламные кампании в интернете, Поддержка сайта, Развитие сайтов, Хостинг, Консалтинговые услуги, Иркутские ведущие компании

Автор: ANDLL 22.11.07, 17:07
HttpWebResponse.ContentEncoding

Автор: GarF1eld 22.11.07, 17:53
Цитата ANDLL @
HttpWebResponse.ContentEncoding

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

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

теперь как мне узнать кодировку? и занести в строку через GetString? :unsure:

Автор: Budda 24.11.07, 00:32
GarF1eld: постучись в понедельник ко мне, на работе где-то был кусок кода, который анализирует кусок текста :) и пытается вычислить кодировку... чё-то есть уже готового у микрософта...

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

в принципе, проблему обошел... но буду благодарен за код :)

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)