您的位置:首页 > 移动开发

让你的App支持emoji

2017-09-15 15:04 239 查看

emoji

绘文字(日语:絵文字/えもじ emoji)是日本在无线通信中所使用的视觉情感符号,绘意指图形,文字则是图形的隐喻,可用来代表多种表情,如笑脸表示笑、蛋糕表示食物等。
自苹果公司发布的iOS 5输入法中加入了emoji后,这种表情符号开始席卷全球,目前emoji已被大多数现代计算机系统所兼容的Unicode编码采纳,普遍应用于各种手机短信和社交网络中。

实现原理

一般来说,有两种方式实现App中对于emoji的支持。第一种方式,是直接使用标准的emoji规则,一个emoji表情对应的是一个长度为4字节的utf-8字符,图案的对应可参考链接,无论是Android还是iOS系统,都已经提供了对于emoji的支持,因此开发者主要需要考虑的就是如何让我们的数据库支持emoji,本文主要介绍此方式中使用mysql支持emoji的方案。另一种方式需要自定义协议,在字符串中通过自己特殊的协议进行标记,而客户端将自定义的表情资源放在本地,获取到内容后根据协议进行处理。这种方式最大的好处就是可以自己定义表情的样式,但是开发的的成本较高。

配置MySQL

在mysql中,我们常用的utf-8字符包含2-3个字节,而emoji包含4个字节,因此是不能直接插入的,需要将数据库的编码由utf-8改为utf8mb4。首先,需要修改mysql的配置文件,Linux下一般为/etc/my.cnf,Windows下为my.ini,在里面增加以下配置
[client]
default-character-set=utf8mb4

[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect=’SET NAMES utf8mb4'

[mysql]
default-character-set=utf8mb4

然后,修改相应数据库表和列的字符编码为utf8mb4,可以通过工具修改,也可以直接进入控制台
1) 修改database的字符集:
ALTER DATABASE 数据库名 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
示例:
ALTER DATABASE xxxdb CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
2) 步骤1)执行完成之后,需要执行use 数据库名,指明当前需要进行字符集修改的数据库;示例:use xxxdb;
3)修改table的字符集:
ALTER TABLE 表名 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
示例:
ALTER TABLE user_comments CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
4) 修改column的字符集:
ALTER TABLE 表名 CHANGE 字段名 字段名 该字段原来的数据类型 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
示例:
ALTER TABLE user_comments CHANGE content content TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

最后,重启mysql即可。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息