Python+Flask+MySQL设置emoji utf8mb4存储

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表情的读写

你可能感兴趣的:(Python+Flask+MySQL设置emoji utf8mb4存储)