Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.09.2011, 01:14   #1
Pein95
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 881
По умолчанию крякозябры.

Код:
            HttpWebRequest request;
            request = (HttpWebRequest)HttpWebRequest.Create(textBox1.Text);
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            StreamReader reader = new StreamReader(response.GetResponseStream());
            string line;
            StringBuilder builder=new StringBuilder();
            while ((line = reader.ReadLine()) != null)
                builder.AppendLine(line);

            response.Close();
            reader.Close();
            richTextBox1.Text = builder.ToString();
собственно с помощю етого кода я получаю код страницы.
но символы кирилицы отображаютса неправильно... Как можно етого избежать?
Зарание спасибо за ответ.
Знаю что проблема с кодировкой. но как ее избежать?

Последний раз редактировалось Pein95; 11.09.2011 в 01:39.
Pein95 вне форума Ответить с цитированием
Старый 11.09.2011, 01:41   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

указать StreamReader'у нужную кодировку надо.
вот пример с проекта:

Код:
        static string GetData(string s)
        {
            Stream st = l.OpenRead(s);
            TextReader tr = new StreamReader(st, System.Text.Encoding.UTF8, false);
            string d = tr.ReadToEnd();
            st.Close();
            tr.Close();
            return d;
        }
l имеет тип WebClient, но в данном случае это не важно.
PS: так же обратите внимание на метод ReadToEnd, позволит избежать вашего цикла while.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 11.09.2011, 01:56   #3
Pein95
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 881
По умолчанию

спс за ответ, а можно написать так?

Код:
StreamReader reader = new StreamReader(response.GetResponseStream(), System.Text.Encoding.UTF8);
Pein95 вне форума Ответить с цитированием
Старый 11.09.2011, 02:08   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

третий параметр лучше всетаки false, а то попытается проверить на BOM(который отключают)

можно вообще так:
Код:
richTextBox1.Text=(new StreamReader(response.GetResponseStream(), System.Text.Encoding.UTF8,false)).ReadToEnd();
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 11.09.2011, 02:39   #5
Pein95
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 881
По умолчанию

всеравно отображаютса знаки вопроса(
сделал так:
Код:
StreamReader reader = new StreamReader(response.GetResponseStream(), System.Text.Encoding.UTF8,false);
когда кодировка самого сайта в UTF8 тогда все нормально, но когда в Windows-1251 кирилица отображаетса знаками вопроса

Последний раз редактировалось Stilet; 11.09.2011 в 14:06.
Pein95 вне форума Ответить с цитированием
Старый 11.09.2011, 07:31   #6
Руслантус
Наркоман самоучка
Форумчанин
 
Аватар для Руслантус
 
Регистрация: 22.07.2007
Сообщений: 276
По умолчанию

Используй - Encoding.Default, либо Encoding.GetEncoding(1251), если там кодировка Windows-1251.
#include <мозг.h>
Руслантус вне форума Ответить с цитированием
Старый 11.09.2011, 10:21   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

помоему вам надо смотреть заголовки ответа на предмет кодировки(ну или искать meta тэг, если не повезло..) и ставить нужную.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 11.09.2011, 18:45   #8
Pein95
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 881
По умолчанию

спс всем кто откликнулса)
ну вот сделал так:
Код:
           string cod = response.CharacterSet;
            if (cod == "utf-8")
            {
                StreamReader reader = new StreamReader(response.GetResponseStream(), System.Text.Encoding.UTF8, false);
            }
            else
            {
                StreamReader reader = new StreamReader(response.GetResponseStream(), System.Text.Encoding.GetEncoding(1251), false);
 
            }
теперь когда кодирова win-1251 все отображаеста нормально, но когда кодирова Utf-8 крякозябрами(((((.
Как я понял условие здесь попросту не работает(
Pein95 вне форума Ответить с цитированием
Старый 11.09.2011, 19:31   #9
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

проверьте, точно ли там то значение которые вы ожидаете в условии.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 11.09.2011, 20:47   #10
Pein95
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 881
По умолчанию

уже проверял.точно utf-8

Последний раз редактировалось Pein95; 12.09.2011 в 18:01.
Pein95 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
По POP3 с Mail.ru получаю "крякозябры" KoBRaAndrey Работа с сетью в Delphi 11 30.11.2009 20:12
Крякозябры в Excel 2007 amigo Microsoft Office Excel 4 13.12.2008 15:17