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


  感謝偉大的網絡,給我們帶來了很多有用的信息

  然后開始 項目需要給app提供接口,發現IOS開發存儲Emoji表情失敗,或者亂碼,在這里給自己留個記錄以及給大家帶來一些參考

首先是字符集的問題,mysql字符集大多數使用的是utf8,需要把字符集更換成utf8mb4,因為UTF-8編碼有可能是兩個、三個、四個字節。Emoji表情是4個字節,而Mysql的utf8編碼最多3個字節,utf8mb4則擴展到一個字符最多能有4字節,並且兼容utf8

  在mysql終端查看下mysql當前版本所支持的字符集,據說mysql 5.5.3版本上才會支持utf8mb4,我沒核對;

   1 show charset; 

  1. 修改database,table,column字符集mysql語句如下  

# 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.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'

 

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表情的存儲了

如果你的php項目存儲Emoji表情會出現亂碼,那么把你php連接Mysql數據庫的字符編碼換成 utf8mb4

另外Mariadb數據庫同樣可以這樣設置

 

 

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM