RDS for MySQL 使用 utf8mb4 字符集存储 emoji 表情-阿里云开发者社区

开发者社区> 阿里云支持与服务> 正文
登录阅读全文

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

简介: RDS for MySQL 使用 utf8mb4 字符集存储 emoji 表情

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

1. 基本原则

2. 三个条件的说明

2.1 应用客户端

2.2 应用到 RDS MySQL 实例的连接

2.3 RDS 实例配置

3. 通过 set names 命令设置会话字符集


1. 基本原则

如果要实现存储 emoji 表情到 RDS for MySQL 实例,需要应用客户端、到 RDS for MySQL 实例的连接、RDS 实例内部 3 个方面统一使用或者支持 utf8mb4 字符集。

注:关于 utf8mb4 字符集,请参考 MySQL 官方文档

2. 三个条件的说明

2.1 应用客户端

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

2.2 应用到 RDS MySQL 实例的连接

以常见的 JDBC 连接为例:

  • 对于 JDBC 连接,需要使用 MySQL Connector/J 5.1.13(含)以上的版本。
  • JDBC 的连接串中,不配置 characterEncoding 选项。

注:关于 MySQL Connector/J 5.1.13,请参考 MySQL 官方 Release Notes

比如

url="jdbc:mysql://myrds.mysql.rds.aliyuncs.com:3306/my_db"

 

2.3 RDS 实例配置

Step 1. 在控制台  参数配置 中修改 character_set_server 参数为 utf8mb4。

 character_set_server_01.png

设置 character_set_server 为 utf8mb4 后,应用客户端与 RDS for MySQL 实例建立连接过程中 RDS for MySQL 实例会告知客户端连接字符集应为 utf8mb4。

注:关于如何使用 utf8mb4 字符集存储 emoji 表情,也可以参考 MySQL 官方文档

Step 2. 设置库的字符集为 utf8mb4

db_utf8mb4_01.png 

Step 3. 设置表的字符集为 utf8mb4

create table emoji_01 (
    id int auto_increment primary key,
    content varchar(255)
)  default charset utf8mb4;

 

 tab_utf8mb4_01.png

3. 通过 set names 命令设置会话字符集

对于 JDBC 连接串设置了 characterEncoding 为 utf8 或者做了上述配置仍旧无法正常插入 emoji 数据的情况,建议在代码中指定连接的字符集为 utf8mb4,样例代码如下:

String sqlCharset = "set names utf8mb4"

Statement statment = conn.createStatement();

resultSet = statment.executeQuery(sqlCharset);

 

注: set names utf8mb4; 命令会将 character_set_client、character_set_connection、character_set_results 3个会话字符集相关变量均设置为 utf8mb4,以保证写入或者读出的数据使用 utf8mb4 字符集进行解释。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:

分享阿里云支持与服务团队最佳实践、经典案例与故障排查。

官方博客
文档