emoji表情初探

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 2015年12月28日 14:24:51 星期一 首先注意的地方: 1. emoji是需要操作系统支持的, 例如: ios更新时, 会在升级日志里说明, 增加了对多少个emoji图标的支持. 原理上是os维护一张表, 当遇到这些unicode十六进制串的时候, 去表里找对应的图片来渲染 2.

2015年12月28日 14:24:51 星期一

首先注意的地方:

1. emoji是需要操作系统支持的, 例如: ios更新时, 会在升级日志里说明, 增加了对多少个emoji图标的支持. 原理上是os维护一张表, 当遇到这些unicode十六进制串的时候, 去表里找对应的图片来渲染

2. 同样的"笑脸"表情, 在不同的系统下的图形是不一样的, 有Unicode官方(原生)的, web端有一套(黑白的), Android, ios, 还有一些开源的, 但是, 同一个意思的表情的Unicode编码是一样

图注: Unicode官方列表

从图中看出:

同一编码(或表达同一个意思的表情)在各个平台的渲染图形是不一样的

code列是unicode编码标准, brow.是浏览器的渲染形状, apple是ios的渲染形状, 还有Google的, One是一个开源的方案, 后边还有twitter, Gmail....

有些表格里是missing, 说明这个平台对这种表情还不支持

 

mysql存储:

注意: 

1. utf8mb4, 是最大支持四个字节的utf8字符集, 是utf8的超集, 所以升级utf8到utf8mb4不会对原有字段截断, 没有影响

2. utf8mb4中的mb跟PHP的mb_**函数们是一个意思, multi Byte 多字节的意思

3. 存储或查询的时候, 表以及相应字段修改为utf8mb4, 不用修改mysql配置文件(备份的时候要指定字符集,mysqldump --default-charater-set=utf8mb4)

mysql> show create table emoji \G
*************************** 1. row ***************************
       Table: emoji
Create Table: CREATE TABLE `emoji` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `content` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4
mysql> show full columns from emoji;
+---------+------------------+--------------------+------+-----+---------+----------------+---------------------------------+---------+
| Field   | Type             | Collation          | Null | Key | Default | Extra          | Privileges                      | Comment |
+---------+------------------+--------------------+------+-----+---------+----------------+---------------------------------+---------+
| id      | int(10) unsigned | NULL               | NO   | PRI | NULL    | auto_increment | select,insert,update,references |         |
| content | varchar(50)      | utf8mb4_general_ci | YES  |     | NULL    |                | select,insert,update,references |         |
+---------+------------------+--------------------+------+-----+---------+----------------+---------------------------------+---------+

图注: 表字符集的配置(charset utf8mb4, collate utf8mb4_general_ci)

4. 连接数据库查询前设置连接字符集 set names utf8mb4 (下边通过对一个Android小程序的调试来解释)

5. 直接在命令行查看数据, 表情符号会是一个问号(?), 但实际上在安卓中可以正常显示的, 因为我这个linux不支持, 而Android系统支持,

(mysql select 出来有4个问号说明插入错误, 注意insert时set names utf8mb4, select 出来有一个问号, 说明select时没有set names utf8mb4)

下边是几个平台的截图:

=>=>

当然浏览器显示的表情比较简陋, 可以通过一些工具对其进行"美化", 比如 js-emoji, php-emoji

美化的原理是

1. 事先制作一张包含所有emoji表情的图片

2. 然后将编码与图片偏移量的对应关系写到数组里边

3. 最后将输入的字符串中包含的emoji编码替换成对应的图片或<img>标签

因为在成为标准之前, emoji有好多版本在流行, 这些工具也支持不同版本的编码进行转换,其原理就是生成每个版本之间的对应关系, 如下图

 

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
7月前
|
图形学
|
10月前
带你读《全景揭秘字符编码》之七:七、常见字符编码1:ASCII
带你读《全景揭秘字符编码》之七:七、常见字符编码1:ASCII
132 0
|
存储 Unix 开发工具
[oeasy]python0111_字型码_字符字型编码_点阵字库_ascii演化
[oeasy]python0111_字型码_字符字型编码_点阵字库_ascii演化
134 0
 [oeasy]python0111_字型码_字符字型编码_点阵字库_ascii演化
|
数据库
轻松解决汉字和拼音转换问题!!
轻松解决汉字和拼音转换问题!!
157 0
|
数据采集 存储 开发工具
[oeasy]python0013_ASCII码表_英文字符编码_键盘字符
[oeasy]python0013_ASCII码表_英文字符编码_键盘字符
104 0
[oeasy]python0013_ASCII码表_英文字符编码_键盘字符
推荐一个好用的汉字转拼音的插件
前阶段做项目时里面有一个小功能,就是输入名字之后,将其转换成拼音,然后填入另一个需要输入的文本框中,在调查一番后,发现了一个比较符合自己需求的一款插件,
359 0
|
SQL 关系型数据库 MySQL
Emoji 表情符号那些坑
Emoji 表情符号那些坑
420 0
Emoji 表情符号那些坑
|
存储 编解码 前端开发
【编码篇】看破字符 %20 之谜,百分号编码以及其背后
提到这个 %20,想必大家都见过,熟悉一点编码的人,还会知道这玩意就是空格转换而来! 那么我们一起破解, 如何编码而来? 我们今天继续学习前端编码知识
558 0
【编码篇】看破字符 %20 之谜,百分号编码以及其背后
|
存储 JavaScript 程序员
编码大揭秘:Unicode的流言终结者
如果你是一个生活在2003年的程序员,却不了解字符、字符集、编码和Unicode这些基础知识。那你可要小心了,要是被我抓到你,我会让你在潜水艇里剥六个月洋葱来惩罚你。
204 0
编码大揭秘:Unicode的流言终结者
|
人工智能 C#
C#汉字转拼音代码分享|建议收藏
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.
1374 0

热门文章

最新文章