问题描述

现在很多用户昵称,用户评论中包含特殊字符串和emoji表情,但是在编码传输的出现问题,导致传输失败,还有Emoji表情是4个字节,而Mysql的utf8编码最多3个字节,所以数据写不进数据库 。


解决方案

我们可以根据正则表达式过滤掉特殊字符串和Emoji表情符号。

代码实现

package com.zcjd.config;import lombok.extern.slf4j.Slf4j;import java.util.regex.Matcher;
import java.util.regex.Pattern;/*** @author 凌乱的枫叶* @ClassName StringUtil* @Description 过滤工具包* @createTime 2022-07-19 10:14:00*/
@Slf4j
public class StringUtil {/*** 过滤特殊字符* @param str* @return*/public static String filterStr (String str){String regEx="[`~!@#$%^&*()+=|{}':;',\\[\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?]";Pattern p = Pattern.compile(regEx);Matcher m = p.matcher(str);return m.replaceAll("").trim();}/*** 过滤emoji表情,将表情替换成** @param source* @return*/public static String filterEmoji(String source) {if(source != null) {Pattern emoji = Pattern.compile("[\ud83c\udc00-\ud83c\udfff]|[\ud83d\udc00-\ud83d\udfff]|[\u2600-\u27ff]|" +"[\ud83e\udd00-\ud83e\uddff]|[\u2300-\u23ff]|[\u2500-\u25ff]|[\u2100-\u21ff]|[\u00a0-\u0fff]|[\u2b00-\u2bff]|[\u2d06]|[\u3030]",Pattern.UNICODE_CASE | Pattern.CASE_INSENSITIVE ) ;Matcher emojiMatcher = emoji.matcher(source);if (emojiMatcher.find()) {source = emojiMatcher.replaceAll("*");return source ;}return source;}return source;}/*** 过滤表情符号* @param content* @return*/public static String filterEmoji2(String content) {StringBuilder sb = new StringBuilder();for (char ch : content.toCharArray()) {if (!Character.isHighSurrogate(ch) && !Character.isLowSurrogate(ch)) {sb.append(ch);}}if (sb.length() < content.length()) {log.info(content.length() + " 过滤掉 " + sb.length());}return sb.toString();}
}

java 过滤特殊字符串和emoji表情符号相关推荐

  1. php过滤微信昵称的emoji表情符号,emoji表情过滤处理

    微信消息接口开发时,消息体包含emoji表情时,不考虑存储emoji表情,可使用preg_replace函数过滤替换,PHP如下: ... $content=json_decode(preg_repl ...

  2. java 检测表情符号_hutool工具包:判断一个字符串中是否包含emoji表情符号(emoji-java)...

    需求: 判断一个字符串中是否包含emoji表情符号. 工具: hutool工具包,emoji-java工具包 cn.hutool hutool-all 5.3.7 com.vdurmont emoji ...

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

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

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

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

  5. php emoji过滤,php + js 移动端 过滤emoji表情符号 完美解决

    最近小编开发微信的时候突然会因为一些莫名奇妙的问题所困惑,下面举例说明 微信获取关注用户的用户名 经常会有用户的昵称带有emoji特殊表情符号,因为好看帅装逼用嘛,就因为这样给很多微信开发的技术带来了 ...

  6. UITextView UITextField 检测并过滤Emoji表情符号

    这篇文章是我的[iOS开发每日小笔记]系列中的一片,记录的是今天在开发工作中遇到的,可以用很短的文章或很小的demo演示解释出来的小心得小技巧.它们可能会给用户体验.代码效率得到一些提升,或是之前自己 ...

  7. 【iOS开发每日小笔记(七)】UITextView UITextField 检测并过滤Emoji表情符号

    这篇文章是我的[iOS开发每日小笔记]系列中的一片,记录的是今天在开发工作中遇到的,可以用很短的文章或很小的demo演示解释出来的小心得小技巧.它们可能会给用户体验.代码效率得到一些提升,或是之前自己 ...

  8. 匹配表情emoji 正则_php正则表达式过滤emoji表情符号

    php正则表达式过滤emoji表情符号2017-08-23 21:41 现在中国有手机的人用微信的应该占了90%吧!小编没事的时候也是天天玩微信. 不过不是发朋友圈这些,而是上面有很多感兴趣的文章. ...

  9. java 过滤字符串_java 过滤字符串方法实现

    这样过滤:"你TMD,也太缺德了吧"过滤后"你***,也太缺德了吧"把骂人的脏话过滤成*号 package test; import java.util.Has ...

最新文章

  1. 给定n本书的名称和定价,本题要求编写程序,查找并输出其中定价最高和最低的书的名称和定价
  2. 协作是企业管理的重点和难点
  3. 鸿蒙推送升级包,华为鸿蒙系统已陆续推送!安卓可无缝升级,升级包容量高达6GB...
  4. ie 和谷歌浏览器在display的边框显示不一样的解决办法
  5. Android’s PreferenceActivity for all API versions
  6. VC++编译libpng
  7. python的字符编码叙述_Python: 熟悉又陌生的字符编码
  8. WCF编程系列(五)元数据
  9. 《 Oracle 10g-11g XTTS迁移方案》.pdf
  10. 作为前端Web开发者,这12条基本命令不可不会
  11. STM32/GD32下用PWM+DMA驱动WS2812B RGB全彩灯珠
  12. 福州发布《关于运用大数据加强对市场主体服务和监管实施方案》
  13. 如何把大写金额变为小写数字_word中怎么将小写金额数字转换为大写
  14. 超五类和六类网线区别 什么样的网线好
  15. Qt中Q_D宏及d指针
  16. 双柱式机械式举升机设计(论文+DWG图纸)
  17. cad批量逐个填充lisp_快速填充的多选问题 - AutoLISP/Visual LISP 编程技术 - CAD论坛 - 明经CAD社区 - Powered by Discuz!...
  18. [JAVA]文件和IO
  19. 简述HEVC与VVC的视频编码过程
  20. java_剪刀包袱锤

热门文章

  1. python基础-结束循环的方式
  2. 专访前C#编译器组首席工程师Eric Lippert
  3. python一边接收数据,一边对数据进行实时处理导致数据丢失
  4. 01语言基础-系统模块和文件操作20220428
  5. 电脑网络里面无法显示本计算机,电脑的本地连接不见了怎么办 电脑的本地连接不见了解决方法...
  6. 【每天学点管理】—绩效面谈的两个技巧
  7. Linux网卡固件,CentOS下X710网卡升级驱动和固件脚本 | 聂扬帆博客
  8. 外观模式 ------模拟电脑主机调用其他硬件和软件
  9. Allegro使用 Z-Copy绘制 Rout Keepin
  10. Linux学习笔记1(鸟哥的私房菜)