感謝偉大的網絡,給咱們帶來了不少有用的信息php
而後開始 項目須要給app提供接口,發現IOS開發存儲Emoji表情失敗,或者亂碼,在這裏給本身留個記錄以及給你們帶來一些參考mysql
首先是字符集的問題,mysql字符集大多數使用的是utf8,須要把字符集更換成utf8mb4,由於UTF-8編碼有多是兩個、三個、四個字節。Emoji表情是4個字節,而Mysql的utf8編碼最多3個字節,utf8mb4則擴展到一個字符最多能有4字節,而且兼容utf8sql
在mysql終端查看下mysql當前版本所支持的字符集,聽說mysql 5.5.3版本上纔會支持utf8mb4,我沒覈對;數據庫
1 show charset; 網絡
1. 修改database,table,column字符集mysql語句以下 app
# For each database: ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci; # For each table: ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; # For each column: ALTER TABLE table_name CHANGE column_name column_name VARCHAR(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; # (Don’t blindly copy-paste this! The exact statement depends on the column type, maximum length, and other properties. The above line is just an example for a `VARCHAR` column.)
2. 修改my.cnfthis
[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'
3.重啓mysql,檢查字符集編碼
mysql> SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';
+--------------------------+--------------------+
| 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 |
| collation_connection | utf8mb4_unicode_ci |
| collation_database | utf8mb4_unicode_ci |
| collation_server | utf8mb4_unicode_ci |
+--------------------------+--------------------
這樣mysql數據庫就支持Emoji表情的存儲了spa
若是你的php項目存儲Emoji表情會出現亂碼,那麼把你php鏈接Mysql數據庫的字符編碼換成 utf8mb4code
另外Mariadb數據庫一樣能夠這樣設置