работа с System.net

  • Автор темы Young Programmer
  • Дата начала
Y

Young Programmer

Гость
#1
Уважаемые программисты! Прошу помочь со следующей проблемкой. Приведу код чтобы было нагляднее
Код:
using System;
using System.Net;
using System.IO;

class NetDemo {
public static void Main() {
int ch;

HttpWebRequest req=(HttpWebRequest) WebRequest.Create("http://bankreferatov.ru");
HttpWebResponse resp=(HttpWebResponse) req.GetResponse();

Stream istrm=resp.GetResponseStream();

StreamWriter strw=new StreamWriter("list.html");

for (int i=1;;i++) {
ch=istrm.ReadByte();
strw.Write((char)ch);
Console.Write((char)ch);
if (ch==-1) break;


if ((i%400)==0) {Console.WriteLine("\nНажмите клавишу"); Console.Read();}

}

strw.Close();
resp.Close();
}
}
Модератор: код читается лучше, если он оформлен, соответственно!

Программа не сложная, отображает гипертекст какого-нибудь адреса, выводит его на консоль и в файл. Так вот, на русскоязычных сайтах текст, встречающийся на сайте отображается в виде иероглифов. Хотелось бы исправить, но не знаю в чем проблема. С англоязычными сайтами отображается все нормально. Подскажите пожалуйста. что нужно сделать для корректного отображения
 
P

Pasha

Гость
#2
Для: Young Programmer
Читай сразу все содержимое ответа в byte[], потом прогоняй его через Encoding.GetEncoding(1251).GetString(...);
 
Y

Young Programmer

Гость
#3
Для Pasha:

Большое спасибо!!! Действительно, заработало. Только еще вопрос, Вы посоветовали читать содержимое сразу в byte[]. Я читал в BinaryReader а оттуда уже побайтно заливал в byte[]. Может вы имели ввиду как-то напрямую считывать в массив byte[]? Если да, то приведите пожалуйста строку, как это организовать.
 
P

Pasha

Гость
#4
Для: Young Programmer
Что-то вроде:
Код:
byte[] buffer = new byte[resp.ContentLength];
int bytesRead = istrm.Read(buffer, 0, buffer.Length);
Но лучше вот так:
Код:
StreamReader readStream = new StreamReader (receiveStream, GetEncoding(1251));
string content = readStream.ReadToEnd ();
readStream.Close();
resp.Close();
 
Y

Young Programmer

Гость
#5
Спасибо! Пользовался первым вариантом. Пожже заценю второй. :)