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字符集不会影响之后的数据质量,且已经存在的数据也不受影响,但是数据存储空间会有所增加。