下述網址的表情包兼容了網頁、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/