今早發現MySQL 中無法存儲emoji表情,查詢資料後發現是字符集的問題。
原因:emoji對應的Unicode編碼不在utf8對應的Unicode分組平面內,無法直接用MySQL的utf8存儲emoji編碼格式字符。
解決方法:將數據庫默認字符集由utf8 更改爲utf8mb4,對應的表默認字符集也更改爲utf8mb4。
從MySQL 5.5.3起,utf8mb4字符集每個字符最多使用四個字節,並支持補充字符,而uft8字符每個字符最多使用三個字節,如果遇到四字節的字符就會出現錯誤了。
參考文章:
MySQL官網—utf8mb4
How to store emoji in a Rails app with a MySQL database