下面講講關(guān)于Flask項(xiàng)目MySQL輸入Emoji表情出現(xiàn)Bug解決方案,文字的奧妙在于貼近主題相關(guān)。所以,閑話就不談了,我們直接看下文吧,相信看完Flask項(xiàng)目Mysql輸入Emoji表情出現(xiàn)Bug解決方案這篇文章你一定會(huì)有所受益。
創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè)、桂陽(yáng)網(wǎng)絡(luò)推廣、微信小程序開(kāi)發(fā)、桂陽(yáng)網(wǎng)絡(luò)營(yíng)銷、桂陽(yáng)企業(yè)策劃、桂陽(yáng)品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供桂陽(yáng)建站搭建服務(wù),24小時(shí)服務(wù)熱線:18982081108,官方網(wǎng)址:www.cdcxhl.com
Bug背景
之前在寫(xiě)Flask入門(mén)項(xiàng)目Flask Mega項(xiàng)目的時(shí)候,一直都是用SQLite,后面切換到Mysql數(shù)據(jù)庫(kù)發(fā)現(xiàn)在存入一些EMOJI表情符號(hào)的時(shí)候,會(huì)出現(xiàn)如下的報(bào)錯(cuò)。
Bug解決思路
剛開(kāi)始覺(jué)得應(yīng)該是數(shù)據(jù)庫(kù)的編碼的問(wèn)題,因?yàn)橹耙灿龅綌?shù)據(jù)庫(kù)存入特殊符號(hào)的時(shí)候發(fā)生報(bào)錯(cuò)。那先查看云服務(wù)器上面的數(shù)據(jù)庫(kù)編碼格式。
show variables like '%char%';
通過(guò)查看數(shù)據(jù)庫(kù)編碼發(fā)現(xiàn)都是utf8格式。然后查閱有關(guān)的資料,以及翻閱之前做過(guò)的筆記發(fā)現(xiàn),Mysql中的utf8編碼格式最多支持最多3字節(jié)的數(shù)據(jù),而emoji表情字符是4個(gè)字節(jié)的字符,如果采用utf8的數(shù)據(jù)庫(kù)插入表情字符,就會(huì)因?yàn)楸唤財(cái)鄬?dǎo)致無(wú)法存入到數(shù)據(jù)庫(kù)。
Bug解決過(guò)程
大概理解了原理就好辦了,修改數(shù)據(jù)庫(kù)的編碼格式,因?yàn)槲沂鞘褂玫氖荕ariadb數(shù)據(jù)庫(kù)
我修改的是/etc/my.cnf,/etc/my.cnf.d/目錄下的配置文件,大概修改有這幾項(xiàng)內(nèi)容:
[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數(shù)據(jù)庫(kù),進(jìn)入數(shù)據(jù)庫(kù)中查看是否修改成功:
修改成功,然后接著修改數(shù)據(jù)庫(kù)和表的編碼格式:
alter database database_name character set 'utf8mb4' collate 'utf8mb4_general_ci';
表格編碼格式:
alter table table_name convert to character set 'utf8mb4' collate 'utf8mb4_general_ci';
查看是否修改成功:
修改成功?。?!
重啟項(xiàng)目然后再次寫(xiě)入帶有Emoji表情符號(hào)的評(píng)論到數(shù)據(jù)庫(kù)中,發(fā)現(xiàn)還是出現(xiàn)了問(wèn)題,重新梳理了一下思路大概是因?yàn)镕lask項(xiàng)目中的SQLAlchemy連接Mysql的編碼格式錯(cuò)誤,重新修改了一下連接數(shù)據(jù)庫(kù)的編碼格式:
再次重啟項(xiàng)目重新發(fā)布評(píng)論:
對(duì)于以上Flask項(xiàng)目Mysql輸入Emoji表情出現(xiàn)Bug解決方案相關(guān)內(nèi)容,大家還有什么不明白的地方嗎?或者想要了解更多相關(guān),可以繼續(xù)關(guān)注我們的行業(yè)資訊板塊。