HttpUtility.HtmlDecode() почему-то превращает входную строку в вопросики (скорее всего, проблема в кодировке). WebUtility.HtmlDecode() не убирает символы >,< и т. д.
Есть ли универсальный способ очистить от этих "паразитов" строку?
HttpUtility.HtmlDecode() почему-то превращает входную строку в вопросики (скорее всего, проблема в кодировке). WebUtility.HtmlDecode() не убирает символы >,< и т. д.
Есть ли универсальный способ очистить от этих "паразитов" строку?
И HttpUtility.HtmlDecode, и WebUtility.HtmlDecode совершенно корректно обрабатывают и любые символы, и HTTP escape-последовательности:
Console.WriteLine(WebUtility.HtmlDecode("<b>пони</b>"));
Console.WriteLine(HttpUtility.HtmlDecode("<b>правят миром</b>"));
Вывод:
<b>пони</b>
<b>правят миром</b>
С функциональной точки зрения эти методы эквивалентны, они отличаются только сборками и версиями .NET.
Если у вас "вопросики", то, вероятно, строка изначально в неверной кодировке. Убедитесь, что после получения строки её содержимо нормально отображается.
Если же вас интересуют именно последовательности >и <, то они некорректные, так как не оканчиваются точкой с запятой. При каких-то условиях некорректные последовательности могут всё равно обрабатываться парсерами HTML, будто они корректные. Чтобы получить подобное поведение, воспользуйтесь полноценными парсерами HTML.
Строки с "паразитными lt и gt" и "вопросиками" обычно не появляются просто так. Скорее всего, вы выковыряли их из HTML файла каким-то топорным способом, например, регулярками, а потом пытаетесь получить нормальный текст. Настоятельно рекомендую пользоваться полноценными парсерами, потому что они не только решат ваши проблемы с "мусорными символами", то и значительно упростят извлечение информации из HTML файлов.