Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.94.77.30] |
|
Сообщ.
#1
,
|
|
|
Добрый день.
Качаю страницу таким образом 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. как можно распознать кодировку и сохранить в переменную распознанную разметку? |
Сообщ.
#2
,
|
|
|
во первых не пиши явно в какой кодировке хочешь получить, потому как данные могут прийти в другой и он неправильно их обработает
а во вторых попробуй так Stream receiveStream = response.GetResponseStream(); StreamReader readStream = new StreamReader(receiveStream,); string result = readStream.ReadToEnd(); readStream.CurrentEncoding //получаю кодировку readStream.Close(); //receiveStream.Close(); -- это не нужно он закроется предыдущим |
Сообщ.
#3
,
|
|
|
Mr_Smith, мне нужно прочитать поток в заданной кодировке, а тут он читается в кодировке по умолчанию.. здесь, например, если кодировка utf8, то русские вимволы просто отсутствуют, получается что-то типа
- , - , - , , PR, , , , , , а должно быть Интернет - наша профессия, Центр Веб - решений, Разработка интернет - решений, Корпоративный сайт, PR, Рекламные кампании в интернете, Поддержка сайта, Развитие сайтов, Хостинг, Консалтинговые услуги, Иркутские ведущие компании |
Сообщ.
#4
,
|
|
|
HttpWebResponse.ContentEncoding
|
Сообщ.
#5
,
|
|
|
Цитата ANDLL @ HttpWebResponse.ContentEncoding там содержится пустая строка. Ок.. задачу можно немного изменить.. закачиваю страницу через WebClient вот так.. WebClient wc = new WebClient(); wc.DownloadFile(domain, fileName); byte[] b = File.ReadAllBytes(fileName); теперь как мне узнать кодировку? и занести в строку через GetString? |
Сообщ.
#6
,
|
|
|
GarF1eld: постучись в понедельник ко мне, на работе где-то был кусок кода, который анализирует кусок текста и пытается вычислить кодировку... чё-то есть уже готового у микрософта...
|
Сообщ.
#7
,
|
|
|
Цитата Budda @ GarF1eld: постучись в понедельник ко мне, на работе где-то был кусок кода, который анализирует кусок текста и пытается вычислить кодировку... чё-то есть уже готового у микрософта... в принципе, проблему обошел... но буду благодарен за код |