1. 程式人生 > >Mysql正確的儲存處emoji表情

Mysql正確的儲存處emoji表情

  今天在給一個老專案做msyql儲存emoji表情時,一直報[error][10501]SQLSTATE[HY000]:Generalerror:1267Illegalmixofcollations(utf8mb4_general_ci,IMPLICIT)and(utf8_general_ci,COERCIBLE)foroperation'like'。資料庫編碼是utf8mb4_general_ci,表的編碼也是utf8mb4_general_ci,欄位的編碼也是utf8mb4_general_ci,可以是一直寫入emoji表情到目標欄位一直報上面的錯誤,網上找了很多資料才知道,是因為在寫入時要先查詢是否存在,在查詢條件中只要有那個要寫入emoji的欄位就會出這個錯誤。又在網上找了很多關於mysql儲存emoji的文章重新梳理了一遍發現,是因為資料庫的連線方式還是utf8。。。。。

  趁著這個事,總結一下如果用Mysql的utf8mb4_general_ci編碼儲存emoji時的整體正確全部環節:

  1、資料庫字符集編碼為utf8mb4_general_ci;

  2、表的字符集編碼為utf8mb4_general_ci;

  3、欄位的字符集編碼為utf8mb4_general_ci;

  4、應用的資料庫配置編碼為utf8mb4_general_ci,TP5.+後是在database.php下的charset設為“utf8mb4”。

  這樣全部設定好後才可以使用mysql儲存emoji表情。