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

  • Автор темы SerLight
  • Дата начала
Статус
Закрыто для дальнейших ответов.
S

SerLight

Гость
#1
есть вот такая вот функция(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="лТХРОЕКЫЙК УЕТЧЕТ ТХОЕФБ П ТБВПФЕ."
(это маленький фрагмент возвращаемого кода вышеизложенной функцией)

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

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

Заранее спасибо.
 
P

Pasha

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

SerLight

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

Pasha

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

Nerone

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

KickTheBaby

Гость
#9
Берем строку
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 возвращается нетронутая строчка. Помогите! Второй день бьюсь. =(
 
Статус
Закрыто для дальнейших ответов.