У меня есть программа, которая разворачивает твиты в реальном времени из потока twitter api. Прежде чем хранить их, я кодирую их как utf8. Некоторые символы попадают в строку как?,?? или??? вместо их соответствующих кодов Юникода и вызывают проблемы. При дальнейших исследованиях я обнаружил, что проблемные символы взяты из "смайлика" блока, U + 1F600 - U + 1F64F и "Разное Блок символов и пиктограмм, U + 1F300 - U + 1F5FF. Я попытался удалить, но не был успешным, так как совпадчик заменил почти каждый символ в строке, а не только нужный диапазон юникода.
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(" ");
Что я могу сделать, чтобы удалить эти символы?