Emoji表情转换工具类

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();
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python 玩转 Emoji 表情,首先需要了解 Emoji 的 Unicode 编码。 Emoji 表情其实是由 Unicode 编码规定的,每个 Emoji 表情对应着一个 Unicode 编码。Python 通过 Unicode 编码来识别和处理 Emoji 表情。 举个例子,比如常见的微笑表情,它的 Unicode 编码是 “😊” 对应的 UTF-8 编码是“F0 9F 98 8A”。Python 中可以通过 Unicode 编码来表示这个 Emoji 表情,代码为 u"\U0001F60A"。 虽然在 Python3 中默认支持 Unicode,但是为了确保在各种环境中的正常运行,我们需要使用 emoji 模块来操作 Emoji 表情。 在使用 emoji 模块时,首先需要安装,可以使用 pip 包管理工具进行安装,在 Python 中通过 import 引入这个emoji 模块,然后就可以通过 emoji.emojize() 方法来将 Unicode 转换成对应的 Emoji 表情了,同时 emoji.demojize() 方法可以将 Emoji 表情转换成对应的 Unicode 编码。 接下来我们可以使用这个模块来实现一些简单的 Emoji 表情操作。 比如我们可以使用下面这段代码来输出一句话,并添加一个微笑表情: from emoji import emojize print(emojize("大家好! :smile:")) 运行效果如下: 大家好! 😊 除了普通的 Emoji 表情外,emoji 模块还支持一些表情的组合,如使用 emoij.emojize(":thumbs_up: :skin-tone-2:") 可以得到一个带有中等肤色点赞的 Emoji 表情。 总之,Python 可以很方便的处理 Emoji 表情emoji 模块为我们提供了很好的支持,如有需要还可以自定义 Emoji 表情,玩转 Emoji,让您的 Python 更加生动有趣。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值