让你的App支持emoji

来源:互联网 发布:打印机软件怎么安装 编辑:程序博客网 时间:2024/05/21 03:27

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 = FALSEcharacter-set-server = utf8mb4collation-server = utf8mb4_unicode_ciinit_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即可。