Вы пишете на консоль. Возможно, ваша консоль не настроена правильно для отображения определенных символов. Убедитесь, отладив и сохранив результат в промежуточной переменной.
Также сайт, который вы привели в качестве примера, полностью испорчен. Веб-сервер отправляет HTTP-заголовок Content-Type: text/html; charset=iso-8859-1
, и в полученном HTML-коде вы видите <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
, что, конечно, совершенно бессвязно. Вы не можете ожидать, что HTTP-клиент будет вести себя правильно, когда сталкивается с нестандартным сайтом, в результате вы получите неожиданное поведение.
Попробуйте провести тестирование на каком-либо веб-сайте, который соответствует минимуму веб-стандартов.
Примечание: WebClient реализует IDisposable , поэтому убедитесь, что вы заключили его в , используя оператор .
UPDATE:
Чтобы он работал с этим конкретным сайтом, вы можете попробовать загрузить ответ вручную и указать правильную кодировку :
// You may try different encodings here (for me it worked with iso-8859-1)
var encoding = Encoding.GetEncoding("iso-8859-1");
using (var client = new WebClient())
{
using (var stream = client.OpenRead("http://www.maxima.fm/51Chart/"))
using (var reader = new StreamReader(stream, encoding))
{
var result = reader.ReadToEnd();
Console.WriteLine(result);
}
}