MySQL儲存 emoji 表情

weixin_34320159發表於2018-07-09

問題分析總結:
原因

普通的字串或者表情都是佔位3個位元組,所以utf8足夠用了,
但是移動端的表情符號佔位是4個位元組,普通的utf8就不夠用了,
為了應對無線網際網路的機遇和挑戰、避免 emoji 表情符號帶來的問題、涉及無線相關的 MySQL 資料庫建議都提前採用 utf8mb4 字符集,這必須要作為移動網際網路行業的一個技術選型的要點

限制

需要 >= MySQL 5.5.3版本、從庫也必須是5.5的了、低版本不支援這個字符集、複製報錯。

Emoji表情符號錄入MySQL資料庫報錯的解決方案
適用ios,android,wp等平臺手機emoji表情符號相容方案
emoji 表情字元插入的配置,emoji表情字元插入

注意:

由於資料表的字符集改變了,varchar型別資料的字符集也改為了utf8mb4_unicode_ci,所以在查詢的時候,一定注意以這個欄位為條件的時候,欄位的資料型別是不是字串型別。如果這個欄位的字符集是utf8mb4_unicode_ci,而查詢的時候是一個Int型的陣列,那麼一定查不到資料的。

再有:

由於我使用的Laravel框架,一定要在config/database.php檔案中修改編碼方式和字符集

'mysql' => [
         'driver' => 'mysql',
         'host' => env('DB_HOST', 'localhost'),
         'port' => env('DB_PORT', '3306'),
         'database' => env('DB_DATABASE', 'forge'),
         'username' => env('DB_USERNAME', 'forge'),
         'password' => env('DB_PASSWORD', ''),
         'charset' => 'utf8mb4',
         'collation' => 'utf8mb4_unicode_ci',
         'prefix' => 'FN_',
         'strict' => false,
         'engine' => null,
     ],

Laravel專案中使用mysql儲存emoji表情亂碼的問題
修改及檢視mysql資料庫的字符集

相關文章