注:核心代码为转载

最近在开发中遇到要过滤掉微信名称中的表情,再入库的功能;在找了多篇实现验证后,发现排名在前的文章们竟然有bug,最终找到以下实现,验证后符合要求,特此记录一下。

import java.util.regex.Matcher;
import java.util.regex.Pattern;/*** 过滤emoji表情与非emoji表情* @author hsw**/
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();}}}}

测试代码如下:

  public static void main(String[] args) {String s = CommonUtil.filterEmoji("苏从映\uD83E\uDD84");System.out.println("-------"+s);boolean b = CommonUtil.containsEmoji("苏从映\uD83E\uDD84");System.out.println("-------"+b);}

java过滤微信昵称emoji表情相关推荐

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

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

  2. java ipone 微信昵称emoji表情保存失败 无法存入数据库

    问题描述:ipone5s中昵称输入"emoji 表情",保存数据库有问题. 运行环境:Java.Tomcat.mysql.Linux(我的Linux下为乱码,这个是linux问题) ...

  3. 过滤微信昵称emoji表情

    /*** 过滤emoji表情与非emoji表情**/ public class EmojiFilter {/*** 检测是否有emoji字符* @param source 需要判断的字符串* @ret ...

  4. 微信昵称emoji表情,特殊表情导致列表不显示,导出EXCEL报错等问题解决!

    微信昵称emoji表情,特殊表情导致列表不显示,导出EXCEL报错等问题解决! 参考文章: (1)微信昵称emoji表情,特殊表情导致列表不显示,导出EXCEL报错等问题解决! (2)https:// ...

  5. php mysql 微信昵称_php 解决微信昵称emoji表情插入MySQL报错

    在PHP接受到微信用户昵称入库的时候报错 原因:utf-8 最大3个字节,而emoji占4个字节 解决办法: 1.修改mysql 数据库的字符集,改为utf8mb4,但是前提是MySQL的版本需要5. ...

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

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

  7. java微信昵称表情_java 微信昵称emoji表情保存失败 无法存入数据库(二)

    前言: 最近开发的iOS项目因为需要用户文本的存储,自然就遇到了emoji等表情符号如何被mysql DB支持的问题.困扰了数日,在就要绝望放弃的边缘,终于完成了转换和迁移.在此特别分析和整理,方便更 ...

  8. 数据库存储微信昵称emoji表情

    在做微信小程序保存用户信息(昵称中带emoji表情)时,报错: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\x94' fo ...

  9. java 过滤微信昵称_JAVA微信开发-如何保存包含特殊字符的微信昵称

    我们在做微信开发的时候,有一个很重要的就是通过openid获取用户的详细信息,包含昵称,头像,省,市,区的信息,但是现在移动时代,很多人追求个性,在名字当中大量使用火星文或者表情符.(本人实际测试过一 ...

最新文章

  1. Gym - 101246D 博弈
  2. MongoDB最简单的入门教程之二 使用nodejs访问MongoDB
  3. 哈哈哈,弟弟被卡桶里了......
  4. 【贪心】Radar Installation(poj 1328)
  5. echarts使用大总结
  6. hdu3949(线性基,求第k小的异或和
  7. [转]2020 年最具潜力 44 个顶级开源项目,涵盖 11 类 AI 学习框架、平台(值得收藏)
  8. VSCode中使用Git忽略提交代码设置
  9. 2021 年全球知名开源项目
  10. 动态规划实战14 leetcode-312. Burst Balloons
  11. 【分享】一个电路仿真软件---proteus ISIS
  12. 对 PInvoke 函数的调用导致堆栈不对称问题
  13. [DCDC](DC-DC) 电感计算有难题 ? 你我一起来学习
  14. 2010年11月30日
  15. Python实现分卷压缩
  16. 好书推荐之《不能承受的生命之轻》 隐私策略(Privacy policy)
  17. 46、建筑防烟排烟系统的维护保养要求
  18. MobaXterm在4K屏幕下的兼容性设置
  19. Python那些让我疑惑许久的代码
  20. 【分析BMI指数~python】

热门文章

  1. Word 2010 中的 VBA 入门
  2. muParser公式库使用简介( 转)
  3. php转调页面,怎样练到转调弹奏信手捏来,太实用
  4. 8.MIL中相机标定(Calibration)
  5. android+获取相册列表,android 获取相册列表的实现(一)
  6. net start mysql:无法启动
  7. 无刷直流电机感应电动势为什么是梯形波?
  8. linux管理web项目目录结构图,WEB项目管理完整.doc
  9. 面试必问 | HBase最新面试总结
  10. win10笔记本外接显示器后,微信界面字体模糊问题的解决方案