写的UDF
public class FilterEmojiUDF extends UDF {
public String evaluate(String str) {
if (str == null || str == "") {
return null;
} else {
StringBuilder sb = new StringBuilder();
str = str.replace(" ", "");
byte[] bytes = str.getBytes(StandardCharsets.UTF_8);
for (int i = 0; i < bytes.length; i++) {
byte b = bytes[i];
if (CharUtils.isAscii((char) b)) {
sb.append(new String(new byte[] { b }));
} else if ((b & 0xE0) == 0xC0) {
sb.append(new String(new byte[] { b, bytes[++i] }));
} else if ((b & 0xF0) == 0xE0) {
sb.append(new String(new byte[] { b, bytes[++i], bytes[++i] }));
} else if ((b & 0xF8) == 0xF0) {
String str1 = new String(new byte[] { b, bytes[++i], bytes[++i], bytes[++i] });
try {
sb.append(URLEncoder.encode(str1, CharEncoding.UTF_8));
} catch (Exception ignore) {
}
}
}
return sb.toString();
}
}
}