usuwanie znaków z określonego zakresu Unicode z łańcucha

Mam program, który paruje tweety w czasie rzeczywistym z api strumienia twitter. Przed ich zapisaniem koduję je jako utf8. Niektóre znaki pojawiają się w łańcuchu jako?, ??, lub ??? zamiast ich odpowiednich kodów Unicode i powodować problemy. Po dalszym badaniu odkryłem, że problematyczne postacie pochodzą zblok „emotikon”, U + 1F600 - U + 1F64F i „RóżneBlok symboli i piktogramów ”, U + 1F300 - U + 1F5FF. Próbowałem usunąć, ale nie powiodło się, ponieważ narzędzie zakończyło zastępowanie prawie każdego znaku w łańcuchu, a nie tylko mojego pożądanego zakresu 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(" ");

Co mogę zrobić, aby usunąć te znaki?

questionAnswers(4)

yourAnswerToTheQuestion