Jsoup разбирает некоторые символы по-разному

0

Я попытался разобрать этот html файл с помощью Jsoup:

<html><body>Maître Corbeau, sur un arbre perché</body></html>

Я использовал эту строку:

Document document = Jsoup.parse(input, "UTF-8");

Когда я пытаюсь распечатать документ:

System.out.println(document.toString());

Оба выхода:

<html>
<head></head>
<body>
Ma&icirc;tre Corbeau, sur un arbre perch&eacute;
</body>
</html>

Почему некоторые персонажи меняются?

  • 0
    Потому что ваш входной HTML не закодирован должным образом.
  • 2
    Пожалуйста, ознакомьтесь с документацией метода readFileToString. Если вы не укажете кодировку, это будет платформой по умолчанию. Может быть, это твоя проблема.
Показать ещё 5 комментариев
Теги:
jsoup

1 ответ

0
Лучший ответ

Извините, но почему именно это неправильный результат?

Ma&icirc;tre Corbeau, sur un arbre perch&eacute;

дает тебе

Maître Corbeau, sur un arbre perché

в браузере whitch правильно, не так ли? если вы хотите получить текст с декодированным контентом, вам нужно использовать document.text() insteed document.toString() поскольку второй даст вам вывод HTML. Но помните, что вы потеряете всю структуру тегов из тела HTML. Если у вас действительно есть HTML-код с декодированными объектами HTML, вам нужно будет использовать StringEscapeUtils.unescapeHtml4(input) от Apache Commons Lang

  • 0
    StringEscapeUtils.unescapeHtml4 был именно тем, что мне было нужно

Ещё вопросы

Сообщество Overcoder
Наверх
Меню