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

RDS MySQL插入emoji表情报错error code [1366]; Incorrect string value: 'xx'是因为utf8字符集的一个字符最多占用3个字节,而一个emoji表情占用4个字节。您可以改为使用utf8mb4字符集以支持存储emoji表情。

基本原则

如果要实现存储emoji表情到RDS MySQL实例,需要客户端、到RDS实例的会话连接、RDS实例三个方面统一使用utf8mb4字符集。

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

  • 到RDS实例的会话连接:支持utf8mb4字符集。以常见的JDBC连接为例,需要使用MySQL Connector/J 5.1.13及以上的版本,JDBC的连接串中,建议不配置characterEncoding选项。

  • RDS实例:在RDS控制台将character_set_server参数设置为utf8mb4,且数据库和表的字符集也要设置为utf8mb4。

修改字符集

如果字符集不符合以上基本原则,请参见RDS for MySQL字符集相关说明修改字符集。

说明

说明:由utf8修改为utf8mb4字符集不会影响之后的数据质量,且已经存在的数据也不受影响,但是数据存储空间会有所增加。