过滤Spring / Java中的特殊字符

时间:2018-01-17 21:03:34

标签: java mysql spring hibernate

我正在使用jsoup从网站上获取所有文字。

Document doc = Jsoup.connect("URL").get();
String allText  doc.text().toLowerCase();

然后我使用Hibernate将包含所有文本的对象持久化到MySQL DB:

...
@Column(name="all_text")
@Lob
private String allText = null;
...

到目前为止一切都很好。只有当我尝试使用allText保存对象时,我才会收到MySQL错误:

java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x8A s...' for column 'all_text' at row 1

已经看过这个,这是一个编码错误。可能在他们的网站上有一些特殊字符。我找到了一种通过更改数据库中的编码来解决此问题的方法。

但我的实际问题是:从allText字符串中过滤和删除特殊字符的最佳方法是什么,而不是完全保留它们?

编辑:澄清一下,通过特殊字符我的意思是表情符号和所有那些东西。绝对不适合UTF-8编码的任何东西。我不关心〜^等...

提前致谢!

1 个答案:

答案 0 :(得分:0)

只需使用正则表达式:

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

不要忘记导入java.util.regexPattern