讓應用程序支持emoji字符

什麼是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_ciserver

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的包括:

  • Java 8
  • Node

最後,若是你的Web應用程序沒有使用標準的UTF-8編碼,而是使用了GBK等編碼,想要支持emoji就只能呵呵了

相關文章
相關標籤/搜索