如何使Ejabberd的Mysql支持emoji

通過一大堆copypaste的百度內容, 大家應該已經知道了若要支持emoji表情必須使用5.5以上的MySql, 並且所有的編碼類型應該修改爲utf8mb4.

但是要成功插入emoji還需要客戶端在使用數據時指定utf8mb4: SET NAMES utf8mb4

例如如果使用yii框架開發php, 在main.php的db數組裏面要指定charset='utfmb4', 否則插入的還是????

所以針對ejabberd, 也需要修改相關的odbc模塊, 具體的地方就在源碼的src/odbc/ejabberd_odbc.erl, 找到其中的 set names 'utf8' 修改爲 set names 'utf8mb4'


然後重新編譯ejabberd

./configure --prefix==/usr/local/ejabberd --enable-odbc
make&&make install 


重啓ejabberd, 完畢


ps. 有人說我都不保存聊天消息, 是不是不需要處理這個. 好吧, 你可以測試一下, 發送一個帶emoji的聊天消息, 假如另一個客戶端沒有登錄, ejabberd就會保存這個消息到spool表中, 由於未修改前輸入的emoji會被截斷, 當另一個的客戶端登錄時, 果然沒有收到剛纔的emoji消息.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章