以往的mysql的utf8一个字符最多3字节,而utf8mb4则扩展到一个字符最多能有4字节,所以能支持更多的字符集。
mysql保存emoji表情需要满足以下几点:
mysql版本5.6以上才支持utf8mb4.
修改 my.cnf或者mysql.ini
[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%';
修改数据库字符集:
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;
如果只是某个字段需要 只需要修改那个字段的字符集就可以了
另外服务器连接数据库 Connector/J的连接参数中,不要加characterEncoding参数。 不加这个参数时,默认值就时autodetect。
本人遇到过在spring 配置文件数据库连接中把编码配置成utf8,依然无法保存表情的问题,后来去掉编码,就成功了。
转自:http://www.linuxidc.com/Linux/2015-04/115840.htm
转载于:https://blog.51cto.com/kevin5051/1660344