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工程中引入(最方便)

com.vdurmont

emoji-java

4.0.0

如果帮助到你,给点鼓励点个推荐吧亲

java emoji显示乱码_Java 解决Emoji表情过滤问题相关推荐

  1. java emoji显示乱码_Java处理emoji的方式

    Java处理emoji的方式 问题由来: java后端获取微信小程序用户昵称含emoji时,显示乱码. 处理思路过滤 是当接收到客户端传过来得数据-->正则判断传过来的字符串中是否包含emoji ...

  2. java通字乱码_Java解决通信过程的中文乱码的问题

    Java解决通信过程的中文乱码的问题 前言: Java的编程中,经常会碰到汉字的处里及显示的问题,比如一大堆乱码或问号. 这是因为JAVA中默认的编码方式是UNICODE,而中国人通常使用的文件和DB ...

  3. java 读写文件乱码_Java 解决读写本地文件中文乱码的问题

    Java 解决读写本地文件中文乱码的问题 前言: 在用Java程序进行读写含中文的txt文件时,经常会出现读出或写入的内容会出现乱码.原因其实很简单,就是系统的编码和程序的编码采用了不同的编码格式.通 ...

  4. java button中文乱码_java解决中文乱码的几种写法

    工作中总会遇到中文乱码问题,以导出文件,文件名称是中文的话,下载下来的文件名称会乱码问题,总结了几种解决文件名乱码的写法,仅供参考. 首先定义一个汉语字符串 String zhName = " ...

  5. sublime text html乱码,Sublime Text 2中文显示乱码的解决方法

    Sublime Text 2中文显示乱码的解决方法 发布时间:2014-05-12 15:30:14   作者:佚名   我要评论 这篇文章主要介绍了Sublime Text 2中文显示乱码的解决方法 ...

  6. html 中文破折号 乱码,java破折号显示乱码

    java破折号显示乱码 [2021-02-06 23:59:19]  简介: php去除nbsp的方法:首先创建一个PHP代码示例文件:然后通过"preg_replace("/(\ ...

  7. utf-8编码的中文注释 在 sourceinsight 显示乱码的解决方法---utf8 转gb2312插件

    utf-8编码的中文注释 在 sourceinsight 显示乱码的解决方法---utf8 转gb2312插件 参考文章: (1)utf-8编码的中文注释 在 sourceinsight 显示乱码的解 ...

  8. win10很多软件显示模糊_win10安装软件出现乱码怎么办 win10新装软件显示乱码的解决方法_windows10_Windows系列_操作系统...

    win10安装软件出现乱码怎么办?在新安装软件时,安装的过程中,安装界面出现了乱码,已至于无法正常安装,这种情况应该如何解决呢?下文中为大家带来了win10新装软件显示乱码的解决方法.感兴趣的朋友不妨 ...

  9. ubuntu终端显示乱码的解决

    ubuntu终端显示乱码的解决 背景 在ubuntu终端,用diff命令比较两个源文件时,发现输出乱码,如下图所示: 原因 Ubuntu默认编码是UTF-8,可以用locale命令查看,在我电脑上查看 ...

最新文章

  1. 2021年大数据ZooKeeper(四):ZooKeeper的shell操作
  2. 雾里散步——这次聊聊自已
  3. 链表的代码实现【数据结构F】
  4. 诺奖技术和高通量筛选双双找到新冠病毒的脉门
  5. 通过Ollydbg定位私有协议通信明文
  6. autocad支持python吗_利用python控制Autocad:pyautocad方式
  7. linux 移出权限,如何在 Ubuntu 上为用户授予和移除 sudo 权限
  8. 软件测试面试必考的SQL语句
  9. mysql证书有哪些_mysql数据库有哪些证书
  10. 教你写页游自动化Python脚本,取色,大漠识别和后台点击
  11. 基于FPGA的DS18B20数字温度传感器测温实例
  12. Navicat连接失败
  13. python xlsm_“xlwings”:不支持写入.xlsm文件?
  14. 浅层神经网络python代码
  15. 基础一:一切都是对象
  16. Spring Cloud 2.x系列之Feign整合断路器监控Hystrix Dashboard
  17. 亲身实践已解决:Mysql Row size too large ( 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT
  18. java 时分秒 转换 秒_JAVA将时分秒格式的时间转化成秒数
  19. WAVE-U-NET: A MULTI-SCALE NEURAL NETWORK FOR END-TO-END AUDIO SOURCE SEPARATION-----论文翻译
  20. android 输入框不可输入中文,Android学习笔记 —— Android 开发中,限制 EditText 输入框不能输入中文(汉字)...

热门文章

  1. saas java框架_XMReport-提供web项目Java套打解决方案
  2. python celery应用场景_python celery 模块
  3. android图片浏览功能,怎么在Android应用中实现一个网页图片浏览功能
  4. jq之animate()操作多个属性
  5. 无法检索文件服务器,无服务器快速无法检索pdf文件(base64编码)
  6. linux上的定时器上的jiffies,Linux kernel -- 定时器/jiffies
  7. MySQL read-c_技术分享 | MySQL C API 参数 MYSQL_OPT_READ_TIMEOUT 的一些行为分析
  8. 西南医科大学计算机应用基础历年真题,网络选修课-计算机应用基础-期末考.docx...
  9. docker 容器端口访问不到_docker容器无法访问宿主机端口的解决
  10. python分词代码_中文分词--最大正向匹配算法python实现