问题描述
emoji表情是通用的unicode字符串,不需要第三方工具支持,就可以显示丰富的表情图标,emoji表情由4个字节组成,mysql的utf8是3个字符,因此当emoji表情存入mysql数据库时会报错。
解决方案
-
utf8mb4的最低mysql版本支持版本为5.5.3+
在终端下:mysql -V 在mysql中:mysql> status; 使用mysql的函数:select version();
-
修改Database、Table、Column字符集,参考如下语句:
-- For each database: ALTER DATABASE db_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 MODIFY COLUMN name varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-
修改MySQL的配置文件my.cnf,windows下为my.ini或my-default.ini。修改完成后重启MySQL服务
[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'
-
校验字符集
SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%'; 需要保证如下变量为utf8mb4 character_set_client character_set_connection character_set_database character_set_results
-
至此数据库端就设置完毕
emoji-test.png -
修改后端程序的数据库连接字符串的charset为utf8mb4即可
网友评论