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?

questionAnswers(4)

yourAnswerToTheQuestion