天天看點

MySQL表中存Emoji報錯Error 1366: Incorrect string value的解決方法

以前在建立MySQL表時,預設的編碼都是utf8,沒什麼總是。最近在寫一個手機的頁面,測試時發現如果我在輸入框的輸入的Emoji字元,存入資料庫時就會報錯:

Error 1366: Incorrect string value: '\xF0\x9F\x91\xBD\xF0\x9F...' for column 'content'
           

Google說MySQL的utf8不是真正的UTF8,隻能包含三個位元組的unicode,4個位元組就會報錯。要解決此總是需要使用

utf8mb4

這個編碼。可是我把表和column的CHARSET都改成

utf8mb4

後仍無法存入Emoji字元。

原來還要在my.cnf裡修改下mysqld的character-set-server,把它改為

utf8mb4

,然後重新開機mysqld,就可存入Emoji字元了。

[mysqld]
character-set-server = utf8mb4
           

是以,建議大家以後在設計表時 default character set 最好設定為

utf8mb4

,因為現在Emoji字元已經很流行了,使用者難免會在浏覽器裡輸入Emoji字元。

繼續閱讀