Искажение русских символов при получении кода элемента с помощью WebClient.DownloadString

141
29 октября 2019, 06:20

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

    WebClient client = new WebClient();
    string htmlCode = client.DownloadString(site);

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

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

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

Answer 1

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

Answer 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, то они на ходу сами, по идее, преобразуют кодировку.

Answer 3

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

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

READ ALSO
Процесс не может получить доступ к файлу, так как файл используется другим процессом

Процесс не может получить доступ к файлу, так как файл используется другим процессом

Все было бы просто и понятно, если бы нужно было "просто" применить using либо "просто" вызвать fileClose() или что то в этом духе

141
Как автоматически присвоить полю его же имя?

Как автоматически присвоить полю его же имя?

К name2 автоматически присвоить значение его же имени, без указания имени в строке

109
Сохранение данных textbox и Image

Сохранение данных textbox и Image

У меня есть 3 textbox(c внесенными данными),1 картинка которая загружается пользователем,1 Listbox в котором нужно выбрать вариант ответаКак и куда...

126