У меня проблема с удалением html сущностей из строк. Я пытаюсь System.Web.HttpUtility.HtmlDecode
и хотел бы, чтобы
был заменен обычным пробелом. Вместо этого возвращается странный шестнадцатеричный код. Я прочитал следующие две темы и узнал, что это, скорее всего, проблема с кодировкой, но я не могу найти способ ее решить.
Удаление HTML сущностей в строках
Как удалить все теги HTML из строки, не зная, какие теги есть в ней? («Я понимаю, что ...», Thierry_S)
исходная строка, которая должна быть извлечена из html кодов и сущностей, сохраняется в базе данных с SQL_Latin1_General_CP1_CI_AI
в качестве параметров сортировки, но для моего модульного теста я просто создал тестовую строку в Visual Studio, кодировка которой не обязательно совпадает в качестве кодировки данных, которые хранятся в базе данных.
Мой модульный тест подтверждает «Не равно», поскольку
не заменяется обычным пробелом. Первоначально он возвращал 2C
, но после большого количества испытаний и попыток преобразования из одной кодировки в другую, теперь он возвращает A0
, хотя я удалил весь код, изменяющий кодировку, из своей функции.
У меня двоякий вопрос:
- Как мне пройти мой модульный тест?
- Правильно ли я тестирую, поскольку кодировка базы данных может отличаться от текста Я набрал вручную в моем модульном тесте?
Моя функция:
public static string StripHtml(string text)
{
// Remove html entities like
text = System.Net.WebUtility.HtmlDecode(text);
// Init Html Agility Pack
var htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(text);
// Return without html tags
return htmlDoc.DocumentNode.InnerText;
}
Мой модульный тест:
public void StripHtmlTest()
{
// arrange
string html = "<p>This is a very <b>fat, <i>italic</i> and <u>underlined</u> text,<!-- foo bar --> sigh.</p> And 6 < 9 but > 3.";
string actual;
string expected = "This is a very fat, italic and underlined text, sigh. And 6 < 9 but > 3.";
// act
actual = StaticRepository.StripHtml(html);
// assert
Assert.AreEqual(expected, actual);
}
Результат теста:
Message: Assert.AreEqual failed. Expected:<This is a very fat, italic and underlined text, sigh. And 6 < 9 but > 3.>. Actual:<This is a very fat, italic and underlined text, sigh. And 6 < 9 but > 3.>.
Результат теста в HEX: