using System.Net.Http;
Встречались ли вы с проблемой, что сайты указывают некорректное значение charset в ContentType заголовке ? Т.е. указывают cp1251, а не windows-1251 и при сериализации содержимого HTTP выдаёт исключение InvalidOperationException.
Я вышел из ситуации и при таком исключении в catch проверяю наличие кривого значения, меняю на нормальное и ещё раз пытаюсь сериализовать.
Но может быть как то иначе это можно делать ?
А не тупо:
string contentType = response.Content.Headers.ContentType.CharSet.ToString();
contentType = contentType.ToLower();
if (contentType.Contains("cp1251"))
{
response.Content.Headers.ContentType.CharSet = "windows-1251";
}
UPD: Вот хороший пример, facebook.com тоже выдаёт исключение.

utf-8- не будут ли на каких то иероглифы вылезать ? Допустим еслиwindows-1251, а я его какutf-8получу по вашему методу. – Xzizz Dec 08 '19 at 12:33если я буду все извлекать в utf-8 - не будут ли на каких то иероглифы вылезать?- конечно будут. Вообще я бы на вашем месте нашел бы способ автоматически "детектить" кодировку полученных байтов, ну или делайте словарь, как вам уже дали ответ. Вот например нашел на EnSO ответ, который автоматически обнаруживает кодировку байтов и выдает преобразованный текст, вам достаточно заменитьbyte[] b = File.ReadAllBytes(filename);на параметр и заменить из моего ответа строки преобразования на это:_ = detectTextEncoding(bytes, out data);. – EvgeniyZ Dec 08 '19 at 13:08конечно будут- исчерпывающий ответ. Спасибо! Буду теперь разбираться и думать. Всё же словарь в моём случае будет проще, чем детект xD Наверно даже просто двумяif1251 и 8 буду вылавливать. Потому что другие я пока кодировки из 200к ссылок не встречал – Xzizz Dec 08 '19 at 13:58