Java中Emoji表情转码与解码

文章内容

1、转码

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public static String emojiConvert(String str) {
 
        String newStr = str;
 
        if (StringUtil.isNotEmpty(str)) {
            try {
                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()) {
                    matcher.appendReplacement(sb, "[[" + URLEncoder.encode(matcher.group(1), "UTF-8") + "]]");
                }
 
                matcher.appendTail(sb);
                newStr = sb.toString();
            } catch (Exception e) {
                // Do nothing
            }
        }
 
        return newStr;
    }

2、解码

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public static String emojiRecovery(String str) {
 
        String newStr = str;
 
        if (StringUtil.isNotEmpty(str)) {
            try {
                String patternString = "[[(.*?)]]";
                Pattern pattern = Pattern.compile(patternString);
                Matcher matcher = pattern.matcher(str);
                StringBuffer sb = new StringBuffer();
 
                while (matcher.find()) {
                    matcher.appendReplacement(sb, URLDecoder.decode(matcher.group(1), "UTF-8"));
                }
 
                matcher.appendTail(sb);
                newStr = sb.toString();
            } catch (UnsupportedEncodingException e) {
                // Do nothing
            }
        }
 
        return newStr;
    }

发表评论

欢迎阅读『Java中Emoji表情转码与解码|Java、开发语言、框架算法、算法|Nick Tan-梓潼Blog』