【发布时间】:2018-01-17 21:03:33
【问题描述】:
我正在使用 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 编码的东西。我不关心~^等等...
提前致谢!
【问题讨论】:
-
抱歉投票结束;不过,这个问题已经有很多版本了,第一个提问者应该得到积分/信用:)。在 Java 中这样做总是有点令人沮丧。不过,这里已经有一个很好的答案:stackoverflow.com/a/7552284/857994。我见过的大多数答案都使用正则表达式,但它始终取决于您的用例对“特殊字符”的定义。
-
刚刚编辑。是的,我看到了其他解决方案,但没有一个真正解决我的问题。也许我用了错误的表达方式来表达“特殊字符”,我说的是人们可以使用的所有表情符号和诸如此类的东西。不确定是否有可以涵盖所有这些的正则表达式?
标签: java mysql spring hibernate