使用unicode转码
只转表情
public class EmojiUtil {
public static String encodeEmoji(String source) throws UnsupportedEncodingException {
StringBuilder newSource = new StringBuilder();
int len = source.length();
for (int i = 0; i < len; i++) {
char codePoint = source.charAt(i);
if (!isNotEmojiCharacter(codePoint)) {
String codePointStr = String.valueOf(codePoint);
codePointStr = URLEncoder.encode(codePointStr,"utf-8");
newSource.append(codePointStr);
} else {
newSource.append(codePoint);
}
}
return newSource.toString();
}
public static String decodeEmoji(String source) throws UnsupportedEncodingException {
return URLDecoder.decode(source,"utf-8");
}
/**
* 判断是否为非Emoji字符
*
* @param codePoint 比较的单个字符
* @return
*/
private static boolean isNotEmojiCharacter(char codePoint) {
return codePoint == 0x0 || codePoint == 0x9 || codePoint == 0xA || codePoint == 0xD || codePoint >= 0x20 && codePoint <= 0xD7FF || codePoint >= 0xE000 && codePoint <= 0xFFFD;
}
}