RDS MySQL使用utf8mb4字符集存储Emoji表情

当尝试在RDS MySQL中插入Emoji表情时,可能会遇到报错error code [1366]; Incorrect string value: 'xx'。这是由于MySQLutf8字符集每个字符最多支持3字节,而Emoji表情需要4字节存储。您可以改为使用utf8mb4字符集以支持存储Emoji表情。

兼容性配置要求

如果要实现存储Emoji表情到RDS MySQL实例,需确保以下三个环节统一采用utf8mb4字符集:

  • 客户端:保证输出字符串的字符集为utf8mb4。

  • 数据库连接层:支持utf8mb4字符集。以JDBC连接为例,要求如下。

    • 使用MySQL Connector/J 5.1.13及以上版本驱动。

    • JDBC连接串不推荐配置characterEncoding参数。

  • RDS实例:

    • 控制台修改参数:character_set_server = utf8mb4,详见设置实例参数

    • 数据库对象设置:

      ALTER DATABASE db_name CHARACTER SET utf8mb4;
      ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4;

字符集修改说明

若现有字符集不符合要求,请按以下优先级进行修改:

  1. 实例级参数character_set_server

  2. 数据库字符集

  3. 表字符集

  4. 字段字符集

说明

utf8修改为utf8mb4后:

  • 现有数据兼容性不受影响。

  • 新增数据可正常存储Emoji。

  • 预估数据存储空间会增加。