Фильтровать специальные символы в Spring / Java

0

Я использую 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. Я не беспокоюсь о ~ ^ и т.д....

Заранее спасибо!

  • 0
    Возможный дубликат Как удалить специальные символы из строки?
  • 0
    Извините за закрытое голосование; Хотя на SO так много версий этого вопроса, и первый претендент должен получить очки / кредит :). Делать это на Java всегда немного неприятно. Здесь уже есть хороший ответ на этот вопрос: stackoverflow.com/a/7552284/857994 . В большинстве ответов, которые я видел, используется регулярное выражение, но оно всегда зависит от определения "специальных символов" в вашем сценарии использования.
Показать ещё 1 комментарий
Теги:
spring
hibernate

1 ответ

0

Просто используйте регулярное выражение:

allText.replaceAll("\\p{C}", "");

Не забудьте импортировать java.util.regexPattern

Ещё вопросы

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