Кодировка текста страницы HTML (WebClient)

Скачиваю страницу HTML через WebClient:

    System.Net.WebClient client = new System.Net.WebClient();
    string html = client.DownloadString("https://example");

Там, где нужно вывкести русский текст, выводятся непонятные символы. Я понял, что проблема с кодировкой, подскажите, как определить кодировку веб-страницы и выводить русский текст?


Ответы (1 шт):

Автор решения: aepot

Лучше использовать HttpClient, так как WebClient устарел. К тому же HttpClient поддерживает TAP, то есть удобные в использовании async/await. (еще ссылка про асинхронность)

Написал пару примеров на базе консольного приложения:

1) Обычный синхронный

class Program
{
    // HttpClient нужно инициализировать один раз на всё время работы приложения.
    private static HttpClient client = new HttpClient();

    static void Main(string[] args)
    {
        string html = client.GetStringAsync("https://ya.ru").GetAwaiter().GetResult();
        Console.WriteLine(html);
        Console.ReadKey();
    }
}

2) И с асинхронным Main (по моему мнению, лучше грузить данные асинхронно)

class Program
{
    private static HttpClient client = new HttpClient();

    static async Task Main(string[] args)
    {
        string html = await client.GetStringAsync("https://ya.ru");
        Console.WriteLine(html);
        Console.ReadKey();
    }
}

Указанной вами проблемы с кодировками при использовании HttpClient не наблюдаю.

→ Ссылка