我使用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编码的东西。我不关心~^等。。。
提前谢谢!
1条答案
按热度按时间fquxozlt1#
只需使用正则表达式:
别忘了导入
java.util.regexPattern