在实际开发中,可能有的地方会需要用到表情,例如我们使用mysql作为rds来存储,如果不做任何处理的时候,当你向mysql插入包含有表情的文本时,会报"Incorrect String '\F0\F8'"等错误,其实原因是我们的数据库通常都是utf8编码,支持三个字节的字符串,而表情是四个字节一编码的。这个时候就可以用utf8编码的扩展utf8mb4编码来解决这个问题。
1.将数据库表的字符集设置为utf8mb4,
alter table test1 convert to character set utf8mb4;
2.在程序的客户端设置连接池的初始化sql,使连接的客户端的编码集设置为utf8mb4
dataSource.setInitSql("set names utf8mb4");
扩展:为什么mysql会需要专门来处理表情,而redis不需要?
因为mysql是按照字符进行编码的,而一个字符包含几个字节是由不同的编码集来决定的,
而redis是按照字节进行编码的,所以也就不会存在需要对表情进行特殊处理了。