zoukankan      html  css  js  c++  java
  • java转换emoji表情

    /**
    * @Description 将字符串中的emoji表情转换成可以在utf-8字符集数据库中保存的格式(表情占4个字节,需要utf8mb4字符集)
    * @param str
    * 待转换字符串
    * @return 转换后字符串
    * @throws UnsupportedEncodingException
    * exception
    */
    public static String emojiConvert1(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) {
    LOG.error("emojiConvert error", e);
    throw e;
    }
    }
    matcher.appendTail(sb);
    LOG.debug("emojiConvert " + str + " to " + sb.toString()
    + ", len:" + sb.length());
    return sb.toString();
    }

    /**
    * @Description 还原utf8数据库中保存的含转换后emoji表情的字符串
    * @param str
    * 转换后的字符串
    * @return 转换前的字符串
    * @throws UnsupportedEncodingException
    * exception
    */
    public static String emojiRecovery2(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) {
    LOG.error("emojiRecovery error", e);
    throw e;
    }
    }
    matcher.appendTail(sb);
    LOG.debug("emojiRecovery " + str + " to " + sb.toString());
    return sb.toString();
    }

  • 相关阅读:
    如何给发票抬头增加页签
    记录激活SAP SMTP服务过程
    反射
    乱码问题
    使用idea的常用的技巧
    解决double的值相加的问题
    代理模式之静态代理
    foreach的真面目
    记录java的面试的每一个瞬间
    变量的经典
  • 原文地址:https://www.cnblogs.com/shihaiming/p/5833244.html
Copyright © 2011-2022 走看看