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();
    }

  • 相关阅读:
    【Xamarin破解补丁找不到?】
    【Xamarin挖墙脚系列:Xamarin.Android的API设计准则】
    【给你几个使用Xamarin的理由】
    【Xamarin 跨平台机制原理剖析】
    HttpStatusCode 枚举
    C语音--static变量
    extern "c"用法
    C语言---类型转换
    VS2008资源问题解决方法
    003---hibernate主要接口介绍
  • 原文地址:https://www.cnblogs.com/shihaiming/p/5833244.html
Copyright © 2011-2022 走看看