Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум на Исходниках.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 |
там содержится пустая строка. Ок.. задачу можно немного изменить.. закачиваю страницу через WebClient вот так.. <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> WebClient wc = new WebClient(); wc.DownloadFile(domain, fileName); byte[] b = File.ReadAllBytes(fileName); теперь как мне узнать кодировку? и занести в строку через GetString? |
Автор: Budda 24.11.07, 00:32 |
GarF1eld: постучись в понедельник ко мне, на работе где-то был кусок кода, который анализирует кусок текста и пытается вычислить кодировку... чё-то есть уже готового у микрософта... |
Автор: GarF1eld 24.11.07, 02:19 |
Цитата Budda @ GarF1eld: постучись в понедельник ко мне, на работе где-то был кусок кода, который анализирует кусок текста и пытается вычислить кодировку... чё-то есть уже готового у микрософта... в принципе, проблему обошел... но буду благодарен за код |