java emoji显示乱码_Java 解决Emoji表情过滤问题
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表情过滤问题相关推荐
- java emoji显示乱码_Java处理emoji的方式
Java处理emoji的方式 问题由来: java后端获取微信小程序用户昵称含emoji时,显示乱码. 处理思路过滤 是当接收到客户端传过来得数据-->正则判断传过来的字符串中是否包含emoji ...
- java通字乱码_Java解决通信过程的中文乱码的问题
Java解决通信过程的中文乱码的问题 前言: Java的编程中,经常会碰到汉字的处里及显示的问题,比如一大堆乱码或问号. 这是因为JAVA中默认的编码方式是UNICODE,而中国人通常使用的文件和DB ...
- java 读写文件乱码_Java 解决读写本地文件中文乱码的问题
Java 解决读写本地文件中文乱码的问题 前言: 在用Java程序进行读写含中文的txt文件时,经常会出现读出或写入的内容会出现乱码.原因其实很简单,就是系统的编码和程序的编码采用了不同的编码格式.通 ...
- java button中文乱码_java解决中文乱码的几种写法
工作中总会遇到中文乱码问题,以导出文件,文件名称是中文的话,下载下来的文件名称会乱码问题,总结了几种解决文件名乱码的写法,仅供参考. 首先定义一个汉语字符串 String zhName = " ...
- sublime text html乱码,Sublime Text 2中文显示乱码的解决方法
Sublime Text 2中文显示乱码的解决方法 发布时间:2014-05-12 15:30:14 作者:佚名 我要评论 这篇文章主要介绍了Sublime Text 2中文显示乱码的解决方法 ...
- html 中文破折号 乱码,java破折号显示乱码
java破折号显示乱码 [2021-02-06 23:59:19] 简介: php去除nbsp的方法:首先创建一个PHP代码示例文件:然后通过"preg_replace("/(\ ...
- utf-8编码的中文注释 在 sourceinsight 显示乱码的解决方法---utf8 转gb2312插件
utf-8编码的中文注释 在 sourceinsight 显示乱码的解决方法---utf8 转gb2312插件 参考文章: (1)utf-8编码的中文注释 在 sourceinsight 显示乱码的解 ...
- win10很多软件显示模糊_win10安装软件出现乱码怎么办 win10新装软件显示乱码的解决方法_windows10_Windows系列_操作系统...
win10安装软件出现乱码怎么办?在新安装软件时,安装的过程中,安装界面出现了乱码,已至于无法正常安装,这种情况应该如何解决呢?下文中为大家带来了win10新装软件显示乱码的解决方法.感兴趣的朋友不妨 ...
- ubuntu终端显示乱码的解决
ubuntu终端显示乱码的解决 背景 在ubuntu终端,用diff命令比较两个源文件时,发现输出乱码,如下图所示: 原因 Ubuntu默认编码是UTF-8,可以用locale命令查看,在我电脑上查看 ...
最新文章
- 2021年大数据ZooKeeper(四):ZooKeeper的shell操作
- 雾里散步——这次聊聊自已
- 链表的代码实现【数据结构F】
- 诺奖技术和高通量筛选双双找到新冠病毒的脉门
- 通过Ollydbg定位私有协议通信明文
- autocad支持python吗_利用python控制Autocad:pyautocad方式
- linux 移出权限,如何在 Ubuntu 上为用户授予和移除 sudo 权限
- 软件测试面试必考的SQL语句
- mysql证书有哪些_mysql数据库有哪些证书
- 教你写页游自动化Python脚本,取色,大漠识别和后台点击
- 基于FPGA的DS18B20数字温度传感器测温实例
- Navicat连接失败
- python xlsm_“xlwings”:不支持写入.xlsm文件?
- 浅层神经网络python代码
- 基础一:一切都是对象
- Spring Cloud 2.x系列之Feign整合断路器监控Hystrix Dashboard
- 亲身实践已解决:Mysql Row size too large ( 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT
- java 时分秒 转换 秒_JAVA将时分秒格式的时间转化成秒数
- WAVE-U-NET: A MULTI-SCALE NEURAL NETWORK FOR END-TO-END AUDIO SOURCE SEPARATION-----论文翻译
- android 输入框不可输入中文,Android学习笔记 —— Android 开发中,限制 EditText 输入框不能输入中文(汉字)...
热门文章
- saas java框架_XMReport-提供web项目Java套打解决方案
- python celery应用场景_python celery 模块
- android图片浏览功能,怎么在Android应用中实现一个网页图片浏览功能
- jq之animate()操作多个属性
- 无法检索文件服务器,无服务器快速无法检索pdf文件(base64编码)
- linux上的定时器上的jiffies,Linux kernel -- 定时器/jiffies
- MySQL read-c_技术分享 | MySQL C API 参数 MYSQL_OPT_READ_TIMEOUT 的一些行为分析
- 西南医科大学计算机应用基础历年真题,网络选修课-计算机应用基础-期末考.docx...
- docker 容器端口访问不到_docker容器无法访问宿主机端口的解决
- python分词代码_中文分词--最大正向匹配算法python实现