From 7e7f901b2172281dc294dfbc67e6ad00625f09f4 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期一, 04 三月 2024 10:11:21 +0800
Subject: [PATCH] 合并代码

---
 cloud-server-management/src/main/java/com/dsh/course/util/EmojiUtil.java |   95 +++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 95 insertions(+), 0 deletions(-)

diff --git a/cloud-server-management/src/main/java/com/dsh/course/util/EmojiUtil.java b/cloud-server-management/src/main/java/com/dsh/course/util/EmojiUtil.java
new file mode 100644
index 0000000..8e551fd
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/course/util/EmojiUtil.java
@@ -0,0 +1,95 @@
+package com.dsh.course.util;
+
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import java.net.URLEncoder;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class EmojiUtil {
+    /**
+     * 编码
+     *
+     * @param str 待转换字符串
+     * @return 转换后字符串
+     * @throws UnsupportedEncodingException exception
+     * @Description 将字符串中的emoji表情转换成可以在utf-8字符集数据库中保存的格式(表情占4个字节,需要utf8mb4字符集)
+     */
+    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) {
+//                LOG.error("emojiConvert error", e);
+                throw e;
+            }
+        }
+        matcher.appendTail(sb);
+//        LOG.debug("emojiConvert " + str + " to " + sb.toString()
+//                + ", len:" + sb.length());
+        return sb.toString();
+    }
+
+    /**
+     * 解码
+     *
+     * @param str 转换后的字符串
+     * @return 转换前的字符串
+     * @throws UnsupportedEncodingException exception
+     * @Description 还原utf8数据库中保存的含转换后emoji表情的字符串
+     */
+    public static String emojiDecode(String str)
+            throws UnsupportedEncodingException {
+        String patternString = "\\[\\[(.*?)\\]\\]";
+
+        Pattern pattern = Pattern.compile(patternString);
+        if (str == null) {
+            return str;
+        }
+        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());
+//        System.out.println("emojiRecovery " + str + " to " + sb.toString());
+        return sb.toString();
+    }
+
+    /**
+     * @param str 待过滤字符串
+     * @return 过滤后字符串
+     * exception
+     * @Description 将字符串中的emoji表情过滤掉
+     */
+    public static String emojiSub(String str) {
+        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, "");
+        }
+        matcher.appendTail(sb);
+        return sb.toString();
+    }
+
+}

--
Gitblit v1.7.1