在spring/java中过滤特殊字符

new9mtju  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(366)

我使用jsoup从网站上获取所有文本。

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

然后我使用hibernate将保存所有文本的对象持久化到mysql数据库:

...
@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编码的东西。我不关心~^等。。。
提前谢谢!

fquxozlt

fquxozlt1#

只需使用正则表达式:

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

别忘了导入 java.util.regexPattern

相关问题