MySQL 資料庫儲存 Emoji 表情及特殊符號

菜就多努力呀n發表於2019-06-20

何為 utf8mb4

  1. MySQL在5.5.3版本之後增加了這個utf8mb4的編碼,mb4就是most bytes 4的意思,專門用來相容四位元組的unicode。其實,utf8mb4是utf8的超集

解決方法:

  1. 檢視編碼字符集:
    • SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';
    • 如結果為下圖所示,則『引起儲存不了特殊符號的原因可能與本文不同,這篇文章可能解決不了您的問題』;
      MySQL 資料庫儲存 Emoji 表情及特殊符號
    • 如若結果中的 value 欄位與上圖有出入,請繼續閱讀本文;
  2. 修改資料庫編碼:
    • ALTER DATABASE database CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
  3. 修改資料表編碼:
    • ALTER TABLE table CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  4. 修改表欄位編碼為:
    • ALTER TABLE table CHANGE column column VARCHAR(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  5. 編輯 my.ini 檔案,新增或修改如下內容:
    [client]
    default-character-set = utf8mb4
    [mysql]
    default-character-set = utf8mb4
    [mysqld]
    character-set-client-handshake = FALSE
    character-set-server = utf8mb4
    collation-server = utf8mb4_unicode_ci
    init_connect='SET NAMES utf8mb4'
  6. 重啟 Mysql
    • service mysqld restart
  7. 再次檢視編碼字符集,如果與上文圖中結果一致,則大功告成~

刻意練習,日益精進。

相關文章