removendo caracteres de um intervalo unicode específico de uma string
Eu tenho um programa que está parsando tweets em tempo real a partir da API de fluxo do twitter. Antes de armazená-los, estou codificando-os como utf8. Alguns caracteres acabam aparecendo na string como?, ?? ou ??? em vez de seus respectivos códigos unicode e causar problemas. Após uma investigação mais aprofundada, descobri que os personagens problemáticos são dobloco "emoticon", U + 1F600 - U + 1F64F, e os "DiversosSímbolos e pictogramas "bloco, U + 1F300 - U + 1F5FF. Eu tentei remover, mas não tive sucesso, pois o matcher acabou substituindo quase todos os caracteres da string, não apenas o meu intervalo unicode desejado.
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(" ");
O que posso fazer para remover esses caracteres?