Проблема с кодировкой страницы.

Тема в разделе ".NET", создана пользователем SerLight, 20 авг 2007.

Статус темы:
Закрыта.
  1. SerLight

    SerLight Гость

    есть вот такая вот функция(asp.net конечно же) :

    public string SiteContent(String SiteAddress)
    {
    WebRequest wr = WebRequest.Create(SiteAddress);
    WebResponse r = wr.GetResponse();

    Stream ReceiveStream = r.GetResponseStream();

    Encoding encode = System.Text.Encoding.Default;//или вместо default; - GetEncoding("Windows-1251");

    StreamReader readStream = new StreamReader(ReceiveStream, encode);
    Char[] read = new Char[256];

    int count = readStream.Read(read, 0, 256);
    string html = "";
    while (count > 0)
    {
    String str = new String(read, 0, count);
    html += str;
    count = readStream.Read(read, 0, 256);
    }
    readStream.Close();
    r.Close();
    return html;
    }

    Эта функция возвращает html код страницы, адрес которой подается на вход функции(SiteAddress).
    Все вроде работает...
    Набираю http://www.joblist.ru/ - все нормально,
    Перехожу на http://www.joblist.ru/resbank/searchvac.shtml (я зарегестрирован там потому у меня есть. Это
    ссылка на страничку поиска вакансий) - тоже все ОК.

    Вот только если SiteAddress = "http://www.joblist.ru/mpb/rb.pl?Action=sv&spec=0&expert=0&city=0&min_sal=&kwds=&op=
    AND&nokwds=&work_place=0&work_graf=0&age=&days=30&agency=0&order=date&uid=&searchtype=
    %CF%EE%EB%ED%E0%FF+%E8%ED%F4%EEp%EC%E0%F6%E8%FF&type=S";

    (это ссылка на страницу результатов поиска. ссылку чтобы влезна в окно форума я разбил на 3 строки
    нужно убрать пробелы после знака "=")
    то тут почему то русский язык превращается вот в это:
    "<META name="description" content="лТХРОЕКЫЙК УЕТЧЕТ ТХОЕФБ П ТБВПФЕ."
    (это маленький фрагмент возвращаемого кода вышеизложенной функцией)

    Подскажите, пожалуйста, в чем дело.

    (прошу прощение за конкретный пример, я его использовал не в целях рекламы)

    Заранее спасибо.
     
  2. Pasha

    Pasha Гость

    Для: SerLight
    Encoding encode = System.Text.Encoding.GetEncoding("koi8r");
    А 1251 в мета - просто пошутили разработчики.
     
  3. SerLight

    SerLight Гость

    Для: Pasha
    Большое спасибо! Вы мне очень помогли) Скажите только как вы определили кодировку? у меня в браузере при попадании на эту страницу выбирается 1251 кодировка... более того у них в теге то же(теперь то я оценил их шутку:D)
    И, если не затруднит, как посмотреть всю коллекцию кодировок?
     
  4. NikSoft

    NikSoft Гость

  5. SerLight

    SerLight Гость

    Для: NikSoft

    Спасибо за помощь)
     
  6. Pasha

    Pasha Гость

    Для: SerLight
    У тебя мозилла. Она показывает в одной кодировке, а в Page Info пишет другую. Вот IE честно автоопределяет KOI8-R.
     
  7. Nerone

    Nerone Гость

    Апну тему, с несколько другой проблемой...
    Получаю HTML'ку а там.... \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d \u043d\u0430 \u043b\u0443\u0433
    Попытки это декодировать методом HttpUtility.UrlDecode() выдают такую же строчку.
    Покопавшись в результатах запросов сковику наткнулся на какой-то "универсальный декодер кириллицы". Он декодировал эту строчку и сказал мне что используется постфильтр uurlencode. Что это такое и с чем едят? Точнее как это в русский текст превратить?
     
  8. vital

    vital Больной Компом Детектед
    Команда форума Web Team

    Регистрация:
    29 янв 2006
    Сообщения:
    2.474
    Симпатии:
    27
    Ну и погуглите про UrlEncode() UrlDecode(). В первом параметре строка, во втором - требуемая кодировка.
     
  9. KickTheBaby

    KickTheBaby Гость

    Берем строку
    string tmp = "34563456\\u0412\\u044b\\u0431\\u0435\\u0440\\u0438\\u0442\\u0435 \\u0441\\u043a\\u0430\\u0447\u043a\\u0438 345346";

    И пытаемся сделать вот это:
    string html = HttpUtility.UrlDecode(tmp);
    html = HttpUtility.UrlDecode(tmp,Encoding.Unicode);
    html = HttpUtility.UrlDecode(tmp, Encoding.UTF8);
    html = HttpUtility.UrlDecode(tmp, Encoding.UTF7);
    html = HttpUtility.UrlDecode(tmp, Encoding.UTF32);
    html = HttpUtility.UrlDecode(tmp, Encoding.ASCII);
    html = HttpUtility.UrlDecode(tmp, Encoding.GetEncoding(1251));

    Как результат поступают различные квадратики и прочая белиберда.
    при использовании UTF8 возвращается нетронутая строчка. Помогите! Второй день бьюсь. =(
     
Загрузка...
Похожие Темы - Проблема кодировкой страницы
  1. JohnLemon
    Ответов:
    16
    Просмотров:
    1.237
  2. Borodo
    Ответов:
    1
    Просмотров:
    1.286
  3. Zloikaktus
    Ответов:
    0
    Просмотров:
    12
  4. c0de3r
    Ответов:
    5
    Просмотров:
    134
  5. DobermannTT
    Ответов:
    10
    Просмотров:
    139
Статус темы:
Закрыта.

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