Emoji 表情符号那些坑

本文涉及的产品
RDSClaw,2核4GB
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS DuckDB + QuickBI 企业套餐,8核32GB + QuickBI 专业版
简介: Emoji 表情符号那些坑

一、Emoji是什么?

它是一种在网页和聊天中使用的形意符号,被称为“绘文字”;最早由栗田穰崇创作,并在日本在无线通信中所使用;2007年,苹果公司发布的iOS 5输入法中加入了emoji后,这种表情符号开始在全球广泛使用。

image.png

二、Emoji 发展历史

早期的 Emoji 是将一些特定的符号组合替换成图片,这种方法很难标准化,能够表达的范围也有限。2010年10月发布的Unicode 6.0版首次收录绘文字编码,也就是说现在的 Emoji 符号就是一个文字,会被渲染成相应的形意符号。

image.png


由于 Emoji 符号使用越来越广泛,Emoji 的国际标准在 2015 年出台,目前已更新到 10.0 版本。

image.png

有的小伙伴可能会问,为什么每个系统显示图形不太一致呢?

这也就是说Unicode组织只是指定标准,比如说码点U+1F468表示男人表情,具体这个男人长成什么样,由各个系统来具体实现。因此,也有可能你的系统没有实现这个Emoji表情,那么你就只能看到一个没有内容的方框了。

目前来说,苹果系统、安卓系统、微信、Github、微博、Twitter、Facebook、Reddit等都有各自的Emoji实现。


三、Bug 起因

image.png

原因:由于Mysql里UTF8编码最多只能支持3个字节,而Emoji表情字符使用的UTF8编码,很多都是4个字节,有些甚至是6个字节。

这里有两种修复方案:

  1. 过滤掉表情符号。
  2. 使用utf8mb4的mysql编码来容纳这些字符。

我一般在选取方案上,优先选择保证数据准确性的方案;因此,本文主要采用第二种处理办法。


四、容纳 Emoji 方案

1. Mysql处理方法

改配置文件/etc/my.cnf(window为my.ini):

image.png

说明:mysql支持utf8mb4的版本是5.5.3+,必须升级到较新版本。

查看版本:

image.png

执行数据库和表、字段的字符集sql:

image.png

重启Mysql:

image.png

检验是否修改好?

image.png

2. Java 服务端处理方法

先引入相关依赖,如下:

image.png

这里只需要一句代码就可以搞定,更多的使用方法请去github上面查看。

image.png


3.网页中如何使用?

这里利用的是twitter开源的表情库;更多使用方法请去官网查看。

image.png

五、结果展示

image.png

六、参考

https://en.wikipedia.org/wiki/Emoji

https://www.dnacademy.com/emoji-domains

http://twitter.github.io/twemoji/

https://github.com/vdurmont/emoji-java


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
1月前
|
人工智能 安全 机器人
OpenClaw阿里云/本地1分钟部署图文教程,配置Kimi-k2.5+集成飞书机器人远程操控指南
2026年,开源AI工具生态迎来爆发式增长,而OpenClaw(前身为Clawdbot、曾用名Moltbot)凭借“中文原生适配+强执行能力+生态开放”的核心优势脱颖而出,成为国内AI玩家的首选智能执行引擎。其2026.2.2版本更是带来三大关键升级:飞书专属适配让中文交互更自然,更快的构建速度提升任务响应效率,全面安全加固筑牢使用防线,彻底打破传统AI“只说不做”的局限——不仅能完成文件管理、代码开发等本地任务,更能通过免费模型与远程操控功能,实现“随时随地发指令,AI全程自动办”。
3662 6
|
6月前
|
API C++ Windows
Visual C++运行库、.NET Framework和DirectX运行库的作用及常见问题解决方案,涵盖MSVCP140.dll丢失、0xc000007b错误等典型故障的修复方法
本文介绍Visual C++运行库、.NET Framework和DirectX运行库的作用及常见问题解决方案,涵盖MSVCP140.dll丢失、0xc000007b错误等典型故障的修复方法,提供官方下载链接与系统修复工具使用指南。
1537 2
|
人工智能 KVM 云计算
阿里云郑晓:浅谈GPU虚拟化技术(第一章)
本文介绍GPU虚拟化的方方面面
15181 1
阿里云郑晓:浅谈GPU虚拟化技术(第一章)
|
监控 数据可视化 数据挖掘
BOT+EPC模式详解:优缺点剖析及适用领域
在现代项目管理和基础设施建设领域,BOT+EPC模式逐渐成为业内的“明星选手”。该模式结合了BOT(建设-运营-移交)和EPC(设计-采购-施工)的优势,实现了融资、建设、运营和移交的全生命周期管理,具有高效、分散风险、明确责任分工等优点。然而,它也存在合同复杂、前期成本高和沟通协调难度大的挑战。BOT+EPC模式适用于大型基础设施、能源、城市公共服务和工业项目。项目管理工具如板栗看板在其中发挥重要作用,提高透明度、进度控制和成本管理。
761 1
|
固态存储 Linux Shell
阿里云Linux服务器性能测试wget -qO- bench.sh | bash
阿里云服务器性能测试,使用知名博主的wget -qO- bench.sh | bash来测试下阿里云服务器CPU Model(CPU型号)、CPU Cores(核数)、CPU Frequency(主频)、Total Disk(磁盘容量)、Total Mem(内存)、Swap(虚拟内存)、系统发行版本、Linux内核、地域节点、磁盘I/O读写速度及云服务器上传下载速度测试
1436 0
阿里云Linux服务器性能测试wget -qO- bench.sh | bash
|
存储 移动开发 API
如何实现浏览器内多个标签页之间的通信
在浏览器中,可通过三种方式实现多标签页通信:一是利用 `localStorage`,通过设置及监听数据变化实现信息传递;二是借助 `Broadcast Channel API`,在同一频道下双向传输消息;三是运用 `SharedWorker`,作为共享工件在各标签间架起沟通桥梁。每种方法依据实际需求选择使用。
|
传感器 人工智能 C#
一文带你聊聊《黑神话:悟空》底层的技术实现
一文带你聊聊《黑神话:悟空》底层的技术实现
2395 13
|
运维 Kubernetes Cloud Native
OAM 深入解读:OAM 为云原生应用带来哪些价值?
OAM 是阿里巴巴联合微软在社区推出的一款用于构建和交付云原生应用的标准规范,旨在通过全新的应用定义、运维、分发与交付模型,推动应用管理技术向“轻运维”的方向迈进,全力开启下一代云原生 DevOps 的技术革命。
OAM 深入解读:OAM 为云原生应用带来哪些价值?
|
JSON Java API
使用Spring Boot实现RESTful API
使用Spring Boot实现RESTful API
|
人工智能 编解码 自然语言处理
通义万相功能使用实战
【7月更文第2天】阿里云的通义万相是款AI绘画工具,让用户通过文本描述创建个性化头像。首先,注册阿里云账号并登录平台。明确头像风格、特征和背景,然后在平台上选择“文本生成图像”,输入详细描述。设定尺寸后提交生成。系统会提供多个选项,用户可选择、调整或重新生成。满意后下载头像,应用于社交平台。记得提供清晰的描述以获取最佳效果,勇于探索不同的创意组合。通义万相,让AI助你实现艺术想象。
1600 0

热门文章

最新文章