Вы используете data.html ().Вот что говорит об этом API класса Element: API элемента
Retrieves the element's inner HTML. E.g. on a <div> with one empty <p>, would return <p></p>. (Whereas Node.outerHtml() would return <div><p></p></div>.)
, поэтому вместо него следует использовать метод outerHtml ():
String content = Jsoup.clean(data.outerHtml(), whitelist);
вот еще одна ссылка на полезные примеры.пример содержит оба метода, и вы можете увидеть разницу: текст атрибута Jsoup и пример HTML
Что касается другой проблемы (цитата превращается в знак вопроса), я думаю, что это вопроскодировка и набор символов, как это не происходит на моем компьютере.проверьте кодировку исходного html-файла и попробуйте сначала проанализировать его в Jsoup с соответствующим набором символов.