以往的mysql的utf8一个字符最多3字节,而utf8mb4则扩展到一个字符最多能有4字节,所以能支持更多的字符集。

mysql保存emoji表情需要满足以下几点:


mysql版本5.6以上才支持utf8mb4.

  1. 修改 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%';

    wKioL1V3s4SBVuDkAAIFbzm3e1c724.jpg

  2. 修改数据库字符集:

    ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;


  3. 修改表的字符集:

    ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

     

  4. 修改字段的字符集:

    ALTER TABLE table_name CHANGE column_name column_name VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

     

    如果只是某个字段需要 只需要修改那个字段的字符集就可以了

  5. 另外服务器连接数据库 Connector/J的连接参数中,不要加characterEncoding参数。 不加这个参数时,默认值就时autodetect。

    本人遇到过在spring 配置文件数据库连接中把编码配置成utf8,依然无法保存表情的问题,后来去掉编码,就成功了。


    转自:http://www.linuxidc.com/Linux/2015-04/115840.htm