2

Получаю исходный код страницы через

    WebClient client = new WebClient();

    string htmlCode = client.DownloadString(site);

Русские символы превращаются в такую кашу -

Русские символыони такие русские

Как это можно задекодить? Что это за кодировка?

4per
  • 2,696
Stepan
  • 297

3 Answers3

2

Как-то вот так:

 var site = @"https://www.ulmart.ru";
            WebClient client = new WebClient();
            WebRequest request=WebRequest.Create(site);
            var response= request.GetResponse();
            client.Headers.Add(HttpRequestHeader.ContentType, response.ContentType);
            string htmlCode = client.DownloadString(site);

Сначала мы отправляем запрос сайту и получаем от него ответ. В ответе мы можем прочитать его заголовок. В заголовке указан тип контента(В данном случае text/html;charset=UTF-8). С помощью этих данных мы можем корректно скачать строку.

А если использовать какие-то библиотеки для парсинга Html, то они на ходу сами, по идее, преобразуют кодировку.

iluxa1810
  • 24,899
1

Проверять разные кракозябры, на ход преобразований, можно например тут https://www.artlebedev.ru/decoder/

В вашем случае client.Encoding получил значение по умолчанию, т.е. кодировку по умолчанию в ОС, в которой выполняется код, для руссифицированной Windows, это кодировка 1251. И надо добавить в ваш код client.Encoding = System.Text.Encoding.UTF8 перед скачиванием строки.

4per
  • 2,696
1

Измени кодировку client.Encoding = System.Text.Encoding.UTF8;

Lolidze
  • 1,370