Получаю исходный код страницы через
WebClient client = new WebClient();
string htmlCode = client.DownloadString(site);
Русские символы превращаются в такую кашу -
Русские символыони такие русские
Как это можно задекодить? Что это за кодировка?
Измени кодировку client.Encoding = System.Text.Encoding.UTF8;
Как-то вот так:
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, то они на ходу сами, по идее, преобразуют кодировку.
Проверять разные кракозябры, на ход преобразований, можно например тут https://www.artlebedev.ru/decoder/
В вашем случае client.Encoding
получил значение по умолчанию, т.е. кодировку по умолчанию в ОС, в которой выполняется код, для руссифицированной Windows, это кодировка 1251.
И надо добавить в ваш код client.Encoding = System.Text.Encoding.UTF8
перед скачиванием строки.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Все было бы просто и понятно, если бы нужно было "просто" применить using либо "просто" вызвать fileClose() или что то в этом духе
К name2 автоматически присвоить значение его же имени, без указания имени в строке
У меня есть 3 textbox(c внесенными данными),1 картинка которая загружается пользователем,1 Listbox в котором нужно выбрать вариант ответаКак и куда...