下面讲讲关于Flask项目MySQL输入Emoji表情出现Bug解决方案,文字的奥妙在于贴近主题相关。所以,闲话就不谈了,我们直接看下文吧,相信看完Flask项目Mysql输入Emoji表情出现Bug解决方案这篇文章你一定会有所受益。
创新互联公司专注为客户提供全方位的互联网综合服务,包含不限于网站建设、成都网站建设、桂阳网络推广、微信小程序开发、桂阳网络营销、桂阳企业策划、桂阳品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联公司为所有大学生创业者提供桂阳建站搭建服务,24小时服务热线:18982081108,官方网址:www.cdcxhl.com
Bug背景
之前在写Flask入门项目Flask Mega项目的时候,一直都是用SQLite,后面切换到Mysql数据库发现在存入一些EMOJI表情符号的时候,会出现如下的报错。
Bug解决思路
刚开始觉得应该是数据库的编码的问题,因为之前也遇到数据库存入特殊符号的时候发生报错。那先查看云服务器上面的数据库编码格式。
show variables like '%char%';
通过查看数据库编码发现都是utf8格式。然后查阅有关的资料,以及翻阅之前做过的笔记发现,Mysql中的utf8编码格式最多支持最多3字节的数据,而emoji表情字符是4个字节的字符,如果采用utf8的数据库插入表情字符,就会因为被截断导致无法存入到数据库。
Bug解决过程
大概理解了原理就好办了,修改数据库的编码格式,因为我是使用的是Mariadb数据库
我修改的是/etc/my.cnf,/etc/my.cnf.d/目录下的配置文件,大概修改有这几项内容:
[client] default-character-set = utf8mb4 [mysql] default-character-set = utf8mb4 [mysqld] character-set-client-handshake = FALSE character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci init_connect=’SET NAMES utf8mb4’
然后重启mariadb数据库,进入数据库中查看是否修改成功:
修改成功,然后接着修改数据库和表的编码格式:
alter database database_name character set 'utf8mb4' collate 'utf8mb4_general_ci';
表格编码格式:
alter table table_name convert to character set 'utf8mb4' collate 'utf8mb4_general_ci';
查看是否修改成功:
修改成功!!!
重启项目然后再次写入带有Emoji表情符号的评论到数据库中,发现还是出现了问题,重新梳理了一下思路大概是因为Flask项目中的SQLAlchemy连接Mysql的编码格式错误,重新修改了一下连接数据库的编码格式:
再次重启项目重新发布评论:
对于以上Flask项目Mysql输入Emoji表情出现Bug解决方案相关内容,大家还有什么不明白的地方吗?或者想要了解更多相关,可以继续关注我们的行业资讯板块。