当尝试在RDS MySQL中插入Emoji表情时,可能会遇到报错error code [1366]; Incorrect string value: 'xx'
。这是由于MySQL的utf8
字符集每个字符最多支持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;
字符集修改说明
若现有字符集不符合要求,请按以下优先级进行修改:
实例级参数
character_set_server
数据库字符集
表字符集
字段字符集
说明
从utf8
修改为utf8mb4
后:
现有数据兼容性不受影响。
新增数据可正常存储Emoji。
预估数据存储空间会增加。
该文章对您有帮助吗?