由于网上某个版本存在bug,以下是将bug修复过的版本,仅供参考

public class EmojiFilter {
/**
     * 检测是否有emoji字符
     * @param source 需要判断的字符串
     * @return 一旦含有就抛出
     */
    public static boolean containsEmoji(String source) {
        int len = source.length();
        for (int i = 0; i < len; i++) {
            char codePoint = source.charAt(i);
            if (!notisEmojiCharacter(codePoint)) {
            //判断确认有表情字符
            return true;
            }
        }
        return false;
    }

/**
     * 非emoji表情字符判断
     * @param codePoint
     * @return
     */
    private static boolean notisEmojiCharacter(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 (!containsEmoji(source)) {
            return source;//如果不包含,直接返回
        }
        
        StringBuilder buf = null;//该buf保存非emoji的字符
        int len = source.length();
        for (int i = 0; i < len; i++) {
            char codePoint = source.charAt(i);
            if (notisEmojiCharacter(codePoint)) {
                if (buf == null) {
                    buf = new StringBuilder(source.length());
                }
                buf.append(codePoint);
            } 
        }
        
        if (buf == null) {        
            return "";//如果没有找到非emoji的字符,则返回无内容的字符串
        } else {
            if (buf.length() == len) {
                buf = null;
                return source;
            } else {
                return buf.toString();
            }
        }
    }
    
}

关于java过滤微信emoji表情的问题解决方法相关推荐

  1. php微信Emoji表情处理

    一.适用场景 通过代码实现微信Emoji表情处理. 二.相关代码 1.字节转Emoji表情 /*** 字节转Emoji表情* @author php_elephant* @param $cp 数据* ...

  2. java 过滤微信昵称_java过滤微信昵称emoji表情与非emoji的问题解决方法

    import java.util.regex.Matcher; import java.util.regex.Pattern; /** * 过滤emoji表情与非emoji表情 * @author h ...

  3. java过滤微信昵称emoji表情

    注:核心代码为转载 最近在开发中遇到要过滤掉微信名称中的表情,再入库的功能:在找了多篇实现验证后,发现排名在前的文章们竟然有bug,最终找到以下实现,验证后符合要求,特此记录一下. import ja ...

  4. mysql 过滤微信昵称表情_微信昵称emoji表情的过滤

    前言 微信昵称现在五花八门,可以加入各种表情符号.这些符号存储到mysql数据库时存在一些问题.这里记录下我的解决方法. 问题 第一种方案:修改数据库编码,支持存储emoji表情 mysql的utf8 ...

  5. mysql 过滤微信昵称表情_PHP正则过滤处理微信昵称中emoji字符的方法

    本文实例讲述了PHP正则过滤处理微信昵称中emoji字符的方法.分享给大家供大家参考,具体如下: 今天刚做了一个微信应用,在获取微信昵称的过程中报错了,经查原因是微信昵称中包含emoji字符,在写入数 ...

  6. java过滤ios表情,JS前端去掉emoji表情和Java后台处理emoji表情方法

    莫非定律 : 任何事情都没表面看去来那么简单! emoji表情在项目中使用,因为其特殊的编码格式,经常导致在网络传输.编解码.以及数据入库中带来一些问题! 下面简单介绍使用Js和java处理移除emo ...

  7. mysql存微信你曾_Mysql存储微信Emoji表情问题

    问题 Tomcat 中报 Java 如下错误: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x8D\x87 \xE7...' fo ...

  8. php 微信表情存储,轻松处理PHP开发中微信emoji表情mysql存储的问题

    背景 做微信开发的时候发现,微信支持emoji表情做昵称,结果考虑不周 Mysql表设计时,都是用UTF8字符集的.把带有emoji的昵称字段往里面insert一下就没了,整个字段变成了空字符串.有的 ...

  9. JS前端去掉emoji表情和Java后台处理emoji表情方法

    莫非定律 : 任何事情都没表面看去来那么简单! emoji表情在项目中使用,因为其特殊的编码格式,经常导致在网络传输.编解码.以及数据入库中带来一些问题! 下面简单介绍使用Js和java处理移除emo ...

最新文章

  1. AI大佬“互怼”:Bengio和Gary Marcus隔空对谈深度学习发展现状
  2. 装逼一步到位!GauGAN代码解读来了
  3. nginx+FastCGI到底是谁影响超时时间
  4. SSH实现论坛BBS系统
  5. tcpip详解--端口号
  6. Delphi中判断字母与汉字
  7. vlookup查找值不唯一时怎么办
  8. jdbc excute方法理解的误区
  9. activemq和mysql_activeMQ 填坑记
  10. JCG学院开设了Java设计模式课程!
  11. Spring Boot 集成MyBatis
  12. 智能会议系统(16)---Linphone配置大全
  13. dll模块化设计与编程_PLC模块、结构化编程到底强在哪里?
  14. 最大速度、加速度时间,加速度、加加速度、加加速度时间
  15. 保存Simulink仿真模型为图片或者PDF的方法
  16. POJ3345 Bribing FIPA(树形DP)
  17. 无线路由器的连接与设置
  18. 高薪职位不少,这个行业为什么如此缺人才?
  19. python等待键盘输入_Pythoninput实现等待键盘输入,超时返回缺省值,并且释放input...
  20. GNSS/INS组合导航(1)-- 姿态矩阵

热门文章

  1. unity3d游戏3d局域网联机吃球游戏完整项目源码分享
  2. minidump详细介绍及其windbg的使用
  3. lambda :: 和计算list中某个字段值的总和
  4. 梦网科技--手机短信验证码实现
  5. Gradle下载的依赖包存放在哪里?
  6. 联想手机吹响反攻号角,“诺曼底计划”未来要剑指何方?
  7. UltraEdit软件破解方法
  8. 高通QCC30xx_QCC51xx_如何 DFU升级 OTA升级
  9. 如何使用React创建视频和动画
  10. 二叉树的前、中、后序遍历