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がそのまま送信する絵文字であることがわかりました。
この特定のツイートのみを探してデバッグしましたが、私の日食はこのエンコード文字を認識していないようです。問題は、この例外をどのように処理できるかということです。MySQLデータベースの構成を探しましたが、エンコーディングを変更できません(これは必須です)。そのため、この種のツイートの管理を回避するか、この複雑な文字を抑制することを選択できます。
しかし、Javaがそれを認識しない場合、どのようにそれを行うのですか?