MySQL與emoji的兼容問題

本來以為我搞回英文就不會再被編碼坑了,事實證明我還是太年輕了手動再見.gif

推特api抓取推文后存入mysql數(shù)據(jù)庫,出現(xiàn)了一些空白內(nèi)容,檢查之后發(fā)現(xiàn)凡是以emoji開頭的text存入數(shù)據(jù)庫的時候會變?yōu)榭铡榱伺懦龁栴}先在推特提供的控制臺里試了試有問題的推文,結(jié)果發(fā)現(xiàn)它抓下來的內(nèi)容是正常的,又在phpstorm里試了試直接打印出抓取內(nèi)容,第一個符號是方塊,后面的內(nèi)容正常,所以覺得問題還是出在mysql上。

后來查了一下mysql從5.5開始支持utf8mb4編碼,也就是可以兼容emoji。通常的utf8用三個字節(jié)來表示字符,而utf8mb4則是四個字節(jié),前者是后者的一個子集,后者能表示更多字符。于是把數(shù)據(jù)庫的編碼改成了utf8mb4,嘗試往數(shù)據(jù)庫寫入emoji表情仍為空,又糾結(jié)了一番發(fā)覺是php代碼設(shè)置PDO的時候出了問題,參考MySQL5.6插入中文亂碼的問題一文設(shè)置charset那一句應(yīng)改為$charset='utf8mb4';。

再次測試能成功插入,不過navicat里emoji還是顯示為問號,不知道是navicat還是windows還是字體問題……

最后編輯于
?著作權(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)容