flask 支持 emoji表情配置

在開發(fā)小程序時flask作為服務(wù)端,用mysql作為數(shù)據(jù)庫。

小程序中允許用戶輸入包含emoji的文字內(nèi)容, 測試過程中發(fā)現(xiàn)報出如下錯誤:

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

大致意思是說,傳入的字符不正確。
首先想到的是字符集的問題,于是百度了一下“mysql支持emoji”,果然找到了答案。創(chuàng)建數(shù)據(jù)庫的時候,我習(xí)慣性地使用了utf8,然后要支持emoji的話,需要使用utf8mb4。

可以參考這篇文章進行修改 MySQL中支持emoji表情的存儲

注意,按需修改,如果你只是個別字段需要emoji的話, 就只改某個字段,減少影響范圍。
另外,這個修改是不需要重啟mysql服務(wù)的

修改完成后,試了一下,emoji變成了青一色的四個問號,????。

既然字符集沒有問題了,那么應(yīng)該是傳輸過程中的內(nèi)容轉(zhuǎn)換。由于使用的是flask_sqlalchemy來連接數(shù)據(jù)庫的,查看了文檔后,發(fā)現(xiàn),數(shù)據(jù)庫連接默認(rèn)使用utf-8方式連接。

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

可以使用下面的方式來修改連接時的默認(rèn)字符集

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

測試可用。

環(huán)境

centos 7
python 3.6
flask 1.0.2
mysql 5.6
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容