以前在建立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字元。