• Java 解决Emoji表情过滤问题(转载)


    本文作者 我是周洲

    原文链接 https://blog.csdn.net/u012904383/article/details/79376707

    本人使用的是第三种引入jar的方法

    问题:

        Emoji表情从三方数据中获取没有过滤,导致存入DB的时候报错。

    原因:

    UTF-8编码有可能是两个、三个、四个字节。Emoji表情是4个字节,而Mysql的utf8编码最多3个字节,所以数据插不进去。

    解决方案:

    1.将已经建好的表也转换成utf8mb4,这个方法不可行,有的时候就不灵了。

    2,写个工具类:过滤掉emoji表情符号

    public class EmojiFilter {
       
     
        private static boolean isEmojiCharacter(char codePoint) {
            return (codePoint == 0x0) || (codePoint == 0x9) || (codePoint == 0xA)
                    || (codePoint == 0xD)
                    || ((codePoint >= 0x20) && (codePoint <= 0xD7FF))
                    || ((codePoint >= 0xE000) && (codePoint <= 0xFFFD))
                    || ((codePoint >= 0x10000) && (codePoint <= 0x10FFFF));
        }
     
        /**
         * 过滤emoji 或者 其他非文字类型的字符
         *
         * @param source
         * @return
         */
        public static String filterEmoji(String source) {
            if (StringUtils.isBlank(source)) {
                return source;
            }
            StringBuilder buf = null;
            int len = source.length();
            for (int i = 0; i < len; i++) {
                char codePoint = source.charAt(i);
                if (isEmojiCharacter(codePoint)) {
                    if (buf == null) {
                        buf = new StringBuilder(source.length());
                    }
                    buf.append(codePoint);
                }
            }
            if (buf == null) {
                return source;
            } else {
                if (buf.length() == len) {
                    buf = null;
                    return source;
                } else {
                    return buf.toString();
                }
            }
        }


    3,使用别人封装的一个类,专门解决emoji问题的。这个在git上有开源的代码。在pom工程中引入

    <dependency>
    <groupId>com.vdurmont</groupId>
    <artifactId>emoji-java</artifactId>
    <version>4.0.0</version>
    </dependency>

    直接就可以在代码中使用了。

    EmojiParser.removeAllEmojis(str)
    这个方法可以过滤掉字符串内的emoji表情。

    ————————————————
    版权声明:本文为CSDN博主「我是周洲」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/zhou2s_101216/article/details/79376707

  • 相关阅读:
    16日彻底去除安卓应用的内置广告
    配台600元的主机套装 自己组装 全新
    带记录功能的计算器
    华为8812 进入工程模式 和打电话黑屏问题
    买平板 四核 500~600左右对比
    querySelector()方法
    Javascript实例教程:querySelector()方法接受一个CSS查询并返回匹配模式的第一个子孙元素,如果没有匹配的元素则返回null。
    Android实用代码七段(二)
    Android实用代码七段(三)
    Firebug入门指南
  • 原文地址:https://www.cnblogs.com/-ccj/p/11737916.html
Copyright © 2020-2023  润新知