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

  • 相关阅读:
    Windows Azure 网站开发Stacks支持
    AzureDev 社区活动获奖者公布
    Android 改变窗口标题栏的布局
    cocos2d-x游戏开发系列教程-超级玛丽01-前言
    cocos2dx进阶学习之CCObject
    基于visual Studio2013解决算法导论之055拓扑排序
    查看某文件夹内文件大小
    vmstat命令
    uname 命令
    iostat命令
  • 原文地址:https://www.cnblogs.com/shihaiming/p/5833244.html
Copyright © 2020-2023  润新知