今早發現mysql 中無法儲存emoji表情,查詢資料後發現是字符集的問題。
原因:emoji對應的unicode編碼不在utf8對應的unicode分組平面內,無法直接用mysql的utf8儲存emoji編碼格式字元。
解決方法:將資料庫預設字符集由utf8 更改為utf8mb4,對應的表預設字符集也更改為utf8mb4。
從mysql 5.5.3起,utf8mb4字符集每個字元最多使用四個位元組,並支援補充字元,而uft8字元每個字元最多使用三個位元組,如果遇到四位元組的字元就會出現錯誤了。
MySQL字符集utf8與utf8mb4
mysql在5.5.3之後增加了這個utf8mb4的編碼,mb4就是most bytes 4的意思,專門用來相容四位元組的unicode。mysql支援的 utf8 編碼最大字元長度為 3 位元組,如果遇到 4 位元組的寬字元就會插入異常了。三個位元組的 utf 8 最大能編碼的 unicode 字...
mysql字符集選用utf8mb4
由於歷史的原因,mysql在5.5.3以前的版本提供的utf8字符集並非是真正的utf8,它只是utf8的乙個子集,提供有限的utf8支援。從mysql5.5.3開始,mysql更改了內部細節實現,增加了乙個utf8mb4字符集,支援真正的unicode,長度由之前的最大3位延伸到4位,比如表情符之...
資料庫字符集utf8與utf8mb4
最近我遇到了乙個bug,我試著通過rails在以 utf8 編碼的mariadb中儲存乙個utf 8字串,然後出現了乙個離奇的錯誤 mon jun 25 2018 10 35 56 gmt 0800 cst mon jun 25 2018 10 35 56 gmt 0800 cst incorrec...