Emoji表情符号为4个字节的字符,而utf8字符集只支持1-3个字节的字符,导致正常配置下的mysql数据库无法存储Emoji表情,前端传过来的文本会自动省略掉emoji内容。
解决方案分为两部分:
(1)设置MySql数据库格式
(2)设置服务器接入MySql的字符格式
1.设置MySQL数据库字符类型
找到/etc/mysql路径下的my.cnf文件,通过vi命令打开该文件并进行编辑,需添加如下所示配置:
[client]
default-character-set=utf8mb4
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect=’SET NAMES utf8mb4'
[mysql]
default-character-set=utf8mb4
修改完毕之后,通过wq保存退出,并重启数据库,执行service mysql restart
可以通过MysqlWorkbench检查数据库表字符类型是否已修改

2.设置服务器接入MySql的字符格式
在Python+Flask架构中,数据库接入url为:SQLALCHEMY_DATABASE_URI='mysql://[user_name]:[password]@[host]/[database_name]'
默认为utf8,因此改为:SQLALCHEMY_DATABASE_URI='mysql://[user_name]:[password]@[host]/[database_name]?charset=utf8mb4'
重启数据库、重启服务器,即可实现emoji表情的读写
网友评论