Я использую jsoup для получения всего текста с веб-сайтов.
Document doc = Jsoup.connect("URL").get();
String allText doc.text().toLowerCase();
Затем я использую Hibernate для сохранения объекта, который содержит весь текст в базе данных MySQL:
...
@Column(name="all_text")
@Lob
private String allText = null;
...
До сих пор все хорошо. Только то, что иногда я получаю ошибку MySQL, когда пытаюсь сохранить объект с помощью allText:
java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x8A s...' for column 'all_text' at row 1
Уже посмотрел это, и это ошибка кодирования. Вероятно, на их сайтах есть специальные символы. Я нашел способ исправить это, изменив кодировку в БД.
Но мой фактический вопрос: какой лучший способ фильтровать и удалять специальные символы из строки allText и не сохранять их вообще?
EDIT: Чтобы уточнить, специальными символами я имею в виду смайлики и все такое. Определенно все, что не вписывается в кодировку UTF-8. Я не беспокоюсь о ~ ^ и т.д....
Заранее спасибо!
Просто используйте регулярное выражение:
allText.replaceAll("\\p{C}", "");
Не забудьте импортировать java.util.regexPattern