import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.net.URLEncoder; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * Emoji转换工具类 * * @version $ID$ * @since 2018/11/12 13:44 */ public class EmojiUtil { static final Logger LOGGER = LoggerFactory.getLogger(EmojiUtil.class); /** * emoji表情转换成字符串 * * @param str * * @return * * @throws UnsupportedEncodingException */ public static String emojiEncode(String str) throws UnsupportedEncodingException { String patternString = "([\\x{10000}-\\x{10ffff}\ud800-\udfff])"; Pattern pattern = Pattern.compile(patternString); Matcher matcher = pattern.matcher(str); StringBuffer sb = new StringBuffer(); while (matcher.find()) { try { matcher.appendReplacement(sb, "[[" + URLEncoder.encode(matcher.group(1), "UTF-8") + "]]"); } catch (UnsupportedEncodingException e) { LOGGER.error("emojiEncode error", e); throw e; } } matcher.appendTail(sb); LOGGER.debug("emojiEncode " + str + " to " + sb.toString() + ", len:" + sb.length()); return sb.toString(); } /** * 将包含字符串转换成emoji表情 * @param str * * @return * * @throws UnsupportedEncodingException * exception */ public static String emojiDecode(String str) throws UnsupportedEncodingException { String patternString = "\\[\\[(.*?)\\]\\]"; Pattern pattern = Pattern.compile(patternString); Matcher matcher = pattern.matcher(str); StringBuffer sb = new StringBuffer(); while (matcher.find()) { try { matcher.appendReplacement(sb, URLDecoder.decode(matcher.group(1), "UTF-8")); } catch (UnsupportedEncodingException e) { LOGGER.error("emojiDecode error", e); throw e; } } matcher.appendTail(sb); LOGGER.debug("emojiDecode " + str + " to " + sb.toString()); return sb.toString(); } }
Emoji表情转换工具类
最新推荐文章于 2024-08-21 10:14:45 发布