Emoji 表情符号那些坑

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 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


相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
开发者 iOS开发
【Markdown小技巧】 整理小图标和表情符号
让博客变得更加优美,你需要这些萌萌的、好看的表情符号。以下是我收集的一些表情符号和小图标,分享给大家。
【Markdown小技巧】 整理小图标和表情符号
|
机器人 API 区块链
emoji大全1
emoji大全
155 0
|
资源调度 Dart Shell
emoji大全2
emoji大全
181 0
|
架构师 iOS开发
iOS Emoji 表情的过滤及非法字符
iOS Emoji 表情的过滤及非法字符
156 1
[Emoji cheat sheet]写博客时会使用的Emoji可爱表情符号
[Emoji cheat sheet]写博客时会使用的Emoji可爱表情符号
|
Web App开发 编解码 JavaScript
关于 Emoji 你不知道的事
关于 Emoji 你不知道的事
1033 0
|
机器学习/深度学习 前端开发 数据建模
HTML标签中英文对照
标签 对应英文 说明 <!-- 内容 --> 注释 <!DOCTYPE> document type a anchor ['æŋkə] 锚超链接 abbr abbreviation [əbriːvɪ’eɪʃ(ə)n] 缩写缩写词 acronym acronym ['ækrənɪm] 首字母缩略词缩写词 address address [ə’dres] 地址联系信息
|
前端开发 程序员 Linux
怎样通过 Twitter 的开源库来随处使用 Emoji 表情符号
怎样通过 Twitter 的开源库来随处使用 Emoji 表情符号 怎样通过 Twitter 的开源库来随处使用 Emoji 表情符号 通过 GitHub 将它们嵌入到网页和其他项目中。 Emoji, 来自日本的小巧符号,通过图像表达感情,已经征服了移动互联网的信息世界。
2333 0
|
存储 编解码 Java
不要小看小小的 emoji 表情
这篇文章得从一个 emoji 表情开始,我之前开源的一个 IM 项目中有朋友提到希望可以支持 emoji 表情传输。