php mysql 存儲 IOS Emoji表情失敗和亂碼問題

  感謝偉大的網絡,給咱們帶來了不少有用的信息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數據庫一樣能夠這樣設置

相關文章
相關標籤/搜索