什麼是emoji?就是這些表情和符號:mysql
😀😄💦😍😂😱😭😴👌sql
自iPhone從iOS 5在輸入法中開始支持emoji以來,這些表情符號迅速風靡世界。可是不少Web網站居然還不!支!持!!!數據庫
那怎麼才能支持emoji呢?其實代碼一行都不用改,由於emoji符號其實是文本,並非圖片,它們僅僅顯示爲圖片而已。並且,emoji符號已經被標準化並編碼到最新的Unicode標準中了,因此,要支持emoji,只須要底層軟件系統支持就能夠了。服務器
服務器端要正確存儲emoji符號,只須要確保Web程序和底層數據庫能支持最新的Unicode標準就能夠了。網站
若是使用MySQL做爲數據庫,須要升級到5.5.3或更新的版本,而後,把默認編碼從原來的utf8改成utf8mb4,在my.cnf
或者my.ini
配置文件中修改以下:編碼
[client] default-character-set = utf8mb4 [mysqld] character-set-server = utf8mb4 collation-server = utf8mb4_general_ci
重啓MySQL,而後使用如下命令查看編碼,應該所有爲utf8mb4
(character_set_filesystem和character_set_system除外):code
mysql> show variables like '%char%'; +--------------------------+--------------------------+ | Variable_name | Value | +--------------------------+--------------------------+ | character_set_client | utf8mb4 | | character_set_connection | utf8mb4 | | character_set_database | utf8mb4 | | character_set_filesystem | binary | | character_set_results | utf8mb4 | | character_set_server | utf8mb4 | | character_set_system | utf8 | | character_sets_dir | /usr/local/mysql-5.7.... | +--------------------------+--------------------------+ 8 rows in set (0.00 sec)
使用命令查看collation設置,應該所有是utf8mb4_general_ci
:server
mysql> show variables like '%coll%'; +----------------------+--------------------+ | Variable_name | Value | +----------------------+--------------------+ | collation_connection | utf8mb4_general_ci | | collation_database | utf8mb4_general_ci | | collation_server | utf8mb4_general_ci | +----------------------+--------------------+ 3 rows in set (0.01 sec)
若是character_set_database
仍是爲utf8
,須要重啓服務器。圖片
如今,MySQL就能夠正確存儲emoji字符了。ci
Web軟件
要支持emoji,須要Web軟件也支持。目前,已知支持emoji的包括:
最後,若是你的Web應用程序沒有使用標準的UTF-8編碼,而是使用了GBK等編碼,想要支持emoji就只能呵呵了