PHP MySQL支持emoji表情存储
前言:因为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 |
+--------------------------+--------------------+ 以上即可。