TwitterストリームAPIからリアルタイムでツイートを解析するプログラムがあります。それらを保存する前に、utf8 としてエンコードしています。特定の文字は、?、??、または ??? として文字列に表示されます。それぞれの Unicode コードの代わりに、問題を引き起こします。さらに調査したところ、問題のある文字は「絵文字」ブロックU+1F600 - U+1F64F と「その他の記号と絵文字」ブロックU+1F300 - U+1F5FF にあることがわかりました。削除しようとしましたが、目的の Unicode 範囲だけでなく、マッチャーが文字列内のほぼすべての文字を置き換えてしまったため、失敗しました。
String utf8tweet = "";
try {
byte[] utf8Bytes = status.getText().getBytes("UTF-8");
utf8tweet = new String(utf8Bytes, "UTF-8");
}
catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
Pattern unicodeOutliers = Pattern.compile("[\\u1f300-\\u1f64f]", Pattern.UNICODE_CASE | Pattern.CANON_EQ | Pattern.CASE_INSENSITIVE);
Matcher unicodeOutlierMatcher = unicodeOutliers.matcher(utf8tweet);
utf8tweet = unicodeOutlierMatcher.replaceAll(" ");
これらの文字を削除するにはどうすればよいですか?