现在比较流行的几种emoji表情的处理方式:1.该数据库编码格式,2.通过第三方插件emoji-java
但是我这边不能该数据库格式,但是使用emoji-java插件发现,有很多最新的字符不支持(这是比较大的坑)
最后找到了编码格式转换存储的方式:
/** 将emoji表情符号转换可读表情符号 */ public static String decodeJava(String text) { return StringEscapeUtils.unescapeJava(text); } /** 将emoji表情符号转换16进制编码存储数据库中 */ public static String encodeJava(String text) { return StringEscapeUtils.escapeJava(text); }
/** * 检测是否有emoji字符 * * @param source * @return 一旦含有就抛出 */ public static boolean containsEmoji(String source) { if (StringUtils.isBlank(source)) { return false; } int len = source.length(); for (int i = 0; i < len; i++) { char codePoint = source.charAt(i); if (!isNotEmojiCharacter(codePoint)) { //判断到了这里表明,确认有表情字符 return true; } } return false; } /** * 判断是否为非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)) || ((codePoint >= 0x10000) && (codePoint <= 0x10FFFF)); }