我正在使用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编码的任何东西。我不关心〜^等...
提前致谢!
答案 0 :(得分:0)
只需使用正则表达式:
allText.replaceAll("\\p{C}", "");
不要忘记导入java.util.regexPattern