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

  • 相关阅读:
    shell 编写简单的整数计算器
    信号控制
    MySQL-索引及优化整理
    Java面试-Java容器有哪些
    C语言宏定义
    值类型与引用类型的区别
    C++虚函数简介
    DNS-域名解析
    扇区,簇,块区分
    Java合并两个数组为一个新数组
  • 原文地址:https://www.cnblogs.com/shihaiming/p/5833244.html
Copyright © 2011-2022 走看看