言简意赅,直入正题。
我用的是mysql数据库,这里我用mysql示意,其他数据库大多一致:
mysql存储表情,需要版本支持,mysql要高于5.5.3,程序驱动包版本要高于5.1.18。
1、数据库方面:
配置数据库、表、字段三者的字符集为utf8mb4,因为mysql的utf8不是真正意义上的utf8,它只能存储3个字节,而真正的utf8是可以存储4个字节的数据,后来为了弥补这一缺陷,mysql官方推出了utf8mb4字符集来弥补自己的缺陷。所以,这里需要将字符集改成utf8mb4来支持表情存储。
执行sql查询字符集:
SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%';
如果查询出来是这样:
character_set_client:utf8
character_set_connection:utf8
character_set_database:utf8
character_set_results:utf8
需要执行sql来改变字符集:
set names utf8mb4
这样就改好了:
character_set_client:utf8mb4
character_set_connection:utf8mb4
character_set_database:utf8mb4
character_set_results:utf8mb4
2、程序方面:
给配置文件中加如下配置:
spring.datasource.druid.connection-init-sqls=set names utf8mb4;
这样就可以支持表情了。
效果图我就不上了,我自己是测试通过了。
说下,我还走的一些路:看别人的帖子说还需要改mtysql的my.ini文件,需要加上
character_set_server=utf8mb4
init_connect='SET NAMES utf8'
因为我的mysql是linux版本的,加上上面配置之后,数据库反而启动报错,前三个修改后还是存储不了的可以试试。
如果还不行,可以试试在程序层面对所有的表情进行过滤,这样至少不会保存报错。