1. Набираем команду codeby webinar. Набираем команду для организации и проведения вебинаров. Подробнее ...

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление
  3. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

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

работа с System.net

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

  1. Young Programmer

    Young Programmer Гость

    Репутация:
    0
    Уважаемые программисты! Прошу помочь со следующей проблемкой. Приведу код чтобы было нагляднее
    Код:
    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 Гость

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

    Young Programmer Гость

    Репутация:
    0
    Для Pasha:

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

    Pasha Гость

    Репутация:
    0
    Для: 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();
     
  5. Young Programmer

    Young Programmer Гость

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

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