flask 支持 emoji表情配置

在开发小程序时flask作为服务端,用mysql作为数据库。

小程序中允许用户输入包含emoji的文字内容, 测试过程中发现报出如下错误:

(_mysql_exceptions.OperationalError) (1366, "Incorrect string value: '\\xF0\\x9F\\x98\\xB2' for column 'content' at row 1")

大致意思是说,传入的字符不正确。
首先想到的是字符集的问题,于是百度了一下“mysql支持emoji”,果然找到了答案。创建数据库的时候,我习惯性地使用了utf8,然后要支持emoji的话,需要使用utf8mb4。

可以参考这篇文章进行修改 MySQL中支持emoji表情的存储

注意,按需修改,如果你只是个别字段需要emoji的话, 就只改某个字段,减少影响范围。
另外,这个修改是不需要重启mysql服务的

修改完成后,试了一下,emoji变成了青一色的四个问号,????

既然字符集没有问题了,那么应该是传输过程中的内容转换。由于使用的是flask_sqlalchemy来连接数据库的,查看了文档后,发现,数据库连接默认使用utf-8方式连接。

SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://db_user:db_user_pwd@address:port/db_name'

可以使用下面的方式来修改连接时的默认字符集

SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://db_user:db_user_pwd@address:port/db_name?charset=utf8mb4'

测试可用。

环境

centos 7
python 3.6
flask 1.0.2
mysql 5.6

你可能感兴趣的:(flask 支持 emoji表情配置)