1. Мегаконкурс в апреле "Приведи друзей на codeby". Дарим деньги, подписку на журнал хакер и выдаем статус "Paid Access". Подробнее ...

    Скрыть объявление

работа с System.net

Тема в разделе ".NET", создана пользователем Young Programmer, 13 ноя 2007.

Наш партнер Genesis Hackspace
  1. Young Programmer

    Young Programmer Гость

    Уважаемые программисты! Прошу помочь со следующей проблемкой. Приведу код чтобы было нагляднее
    Код (Text):
    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();
    }
    }
    Модератор: код читается лучше, если он оформлен, соответственно!

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

    Pasha Гость

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

    Young Programmer Гость

    Для Pasha:

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

    Pasha Гость

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

    Young Programmer Гость

    Спасибо! Пользовался первым вариантом. Пожже заценю второй. :)
     
Загрузка...

Поделиться этой страницей