美文网首页
mysql下emoji存储

mysql下emoji存储

作者: michaellct | 来源:发表于2017-02-23 15:16 被阅读91次

    问题描述

    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
      
    utf8mb4.png
    • 至此数据库端就设置完毕

      emoji-test.png
    • 修改后端程序的数据库连接字符串的charset为utf8mb4即可

    相关文章

      网友评论

          本文标题:mysql下emoji存储

          本文链接:https://www.haomeiwen.com/subject/nerbwttx.html