在Java中处理字符串时如何避免Twitter表情符号

在Java中处理字符串时如何避免Twitter表情符号,java,encoding,twitter,emoticons,Java,Encoding,Twitter,Emoticons,我正在处理来自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

我正在处理来自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
在我的日志中查找有问题的tweet时,我发现以下一条:

 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 ...
2012-08-31 08:11:22971 INFO com.myapp.TweetLoaderJob-tweet 241175722096480256的文本:RT@totalytoyosi\uuz:My go
odies,我的好东西,不是你的好东西#m&ms#甜品#好东西#美食#豪华电影院咖啡厅,Brixton htt。。。
最后,看看到底是什么,我发现这是Twitter发送的一个表情符号

我已经调试过了,只查找这个特定的tweet,我的eclipse似乎无法识别这个编码字符。所以问题是,我如何处理这个异常?我想配置我的MySQL数据库,但我无法更改编码(这是一项要求),所以我的选择是避免管理此类tweet,或者抑制这种复杂的字符


但是,如果Java无法识别它,该怎么做呢?

在将字符串存储到数据库之前,您可以过滤字符串并删除不需要的部分(使用简单的regexp,如
]+>
)。。。我猜这是重唱,但不是收到的文本。我刚刚发现:
s=s.replaceAll(“[^\\x00-\\x7f]”,“”)。这对你有用吗?最后,我用一个肮脏的变通方法解决了这个问题(但它以同样的方式解决了这个问题,只是设置了一个问号而不是那个表情):
newstring(status.getText().getBytes(“ISO-8859-1”)我已在m4573r测试了您的解决方案。它工作得很好,但我不喜欢这样的角色。你在哪里找到那个正则表达式的?也许我可以更准确一点…用这个正则表达式解决了(昨天)的问题:
[^\\x00-\\x7f-\\x80-\\xad]
。谢谢