我正在处理来自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原封不动地发送的一个表情符号。点击此处可以查看相关信息。
我进行了调试,只查找了特定推文,但我的Eclipse似乎无法识别这种编码字符。那么问题来了,我该如何处理这个异常?我查找了如何配置MySQL数据库,但是我不允许更改编码(这是一个要求),所以我的选择是避免处理这种推文或删除这个复杂的字符。
但如果Java不能识别它,怎么办呢?
s = s.replaceAll("[^\\x00-\\x7f]", "");
。这对你有用吗? - m4573rnew String(status.getText().getBytes("ISO-8859-1"));
- Alex_ES[^\\x00-\\x7f-\\x80-\\xad]
。谢谢! - Alex_ES