前言:因为emoji占四个字符,而默认的utf8最多只是3个,所以会乱码,而utf8mb4是支持的
最新版的mysql 7是默认支持emoji表情的,不用任何配置,其他版本的必须得在5.5.3以上的版本才支持utf8mb4;

一、修改mysql配置文件:(我用的是oneinstack。在etc/my.conf)

default-character-set = utf8mb4
character-set-server = utf8mb4

二、把数据库、表、字段的字符集设置为utf8mb4(SQL语句或者Navicat工具控制)

# 修改数据库:  
ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;  
# 修改表:  
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;  
# 修改表字段:  
ALTER TABLE table_name CHANGE column_name column_name VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;  
PS:我用的是tp5框架,database配置里数据库默认编码里改为:'charset' => 'utf8mb4';

三、检查环境变量 和测试 SQL 如下:(设置:set NAME utf8mb4)

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 |  
+--------------------------+--------------------+  

以上即可。

标签: none

添加新评论