如何避免Twitter的表情符号字符而在Java处理字符串(How to avoid Twitter

2019-09-22 00:34发布

我正在从Twitter的鸣叫处理并将其存储在一个数据库(MySQL的)。

我有我的过程中运行完美,但有时我得到这样一个错误:

2012-08-31 08:11:23,303 WARN org.hibernate.engine.jdbc.spi.SqlExceptionHelper  - SQL Error: 1366, SQLState: HY000
2012-08-31 08:11:23,304 ERROR org.hibernate.engine.jdbc.spi.SqlExceptionHelper  - Incorrect string value: '\xF0\x9F\x98\x9D #...' for column 'twe_text' at row 1

当寻找我的日志,我发现下面的一个有问题的鸣叫:

 2012-08-31 08:11:22,971 INFO com.myapp.TweetLoaderJob  - Text for tweet 241175722096480256: RT @totallytoyosi_: My go
odies, my goodies, not your goodies  <U+1F61D> #m&ms #sweeties #goodies #food  @ The Ritzy Cinema Café, Brixton htt ...

最后,看到底是什么,我发现这是一个表情符号,Twitter的发送原样

我已经调试完毕,只为这个特定的tweet的前瞻性和我的月食似乎没有认识到这一点编码的字符。 所以,问题是,我该怎么处理这个异常? 我找了我的配置MySQL数据库,但我不能改变编码(这是一个要求),所以我的选择是避免管理这种鸣叫或剿这个复杂的角色。

但如何做到这一点,如果Java不承认呢?

Answer 1:

你可以筛选你的字符串,并删除不需要的部分(用一个简单的正则表达式像<U+[^>]+>将其存储在数据库中之前。



文章来源: How to avoid Twitter emoticon character while processing string in Java