下述网址的表情包兼容了网页、ios、apple等平台,图标的显示在各平台间可能有些差异,但基本上不须要本身单独再去作一套图标了。php
http://apps.timwhitlock.info/emoji/tables/unicodejava
<?php $emoji = 'F09F9883'; //第三个表情符的utf-8形式:\xF0\x9F\x98\x83 echo hex2bin($emoji); ?>
在google chrom、safari、firefox浏览器能够显示正常的图标。mysql
app里的使用也相似,只要将utf8转成对应的二进制字符再输出便可正常解释成一个图标。ios
复制发到微信也能够正常显示。git
但微信使用的表情系统不是基于Unicode的,并且本身单独开发的,传统的使用占位符方式,如[微笑],发送后再解释成一个微笑的表情符,这种方案体验不是很好。至于为什么微信选用此方案,多是为了更好的兼容要求,毕竟开发的比较早,并且不一样机型适配显示的问题,另外加上安全的考虑(emoji是基于扩展Unicode字符集实现的),在后台程序处理上要当心,不然常常会带来没必要要的问题,若是这些不是主要考虑的问题,使用emoji的unicode方案不失为一种方便快速的实现。github
微信的昵称是支持emoji的。sql
base64编码法。emoji是二进制的,因此在直接sql操做中可能会出错,要先将内容转成其余格式再保存,如用base64。数据库
针对mysql5.5以上版本,还有一种解决方案是将字段转为utf8mb4(由于emoji是4个字符的),同时保证mysql链接使用的是utf8mb4,如 SET NAMES utf8mb4segmentfault
ALTER TABLE mytable charset=utf8mb4; MODIFY COLUMN textfield1 VARCHAR(255) CHARACTER SET utf8mb4;
SET NAMES utf8mb4
JAVA链接池方式要修改my.cnf全局配置才会生效,同时修改链接串为 浏览器
jdbc:mysql://localhost:3306/your_database?useUnicode=true&characterEncoding=UTF-8 (注意characterEncoding没有utf8mb4的参数,只能用utf-8)
若是仍有问题请检查jdbc链接包jar的版本,通常要5.1以上才对utf8mb4支持正常
vi /etc/my.cnf [client] default-character-set = utf8mb4 [mysql] default-character-set = utf8mb4 [mysqld] character-set-client-handshake = FALSE character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci init_connect='SET NAMES utf8mb4'
国内各公司完美支持emoji的估计还很少。
参考
http://www.javashuo.com/article/p-fhfqfxxz-z.html
http://info.michael-simons.eu/2013/01/21/java-mysql-and-multi-byte-utf-8-support/