1. 程式人生 > 資料庫 >MySQL如何插入Emoji表情

MySQL如何插入Emoji表情

前言

今天在設計開源專案的反饋資訊表時遇到了emoji表情插入失敗的問題,網上找了很多解決方案,答案五花八門,沒找到好使的。

經過一番折騰後,終於成功插入了emoji表情,本文就跟大家分享下我的實現過程,歡迎各位感興趣的開發者閱讀本文。

寫在前面

我的伺服器是Mac系統,mysql使用brew安裝的,windows/linux它的配置檔案位置可能有些不一樣,具體根據真實情況而定。

先跟大家看下它的報錯資訊:

chat_system> UPDATE chat_system.feedback t SET t.comments = '反饋資訊測試😂' WHERE t.id = 1
[2020-12-01 21:36:08] [HY000][1366] Incorrect string value: '\xF0\x9F\x98\x82' for column 'comments' at row 1
[2020-12-01 21:36:08] [HY000][1366] Incorrect string value: '\xF0\x9F\x98\x82' for column 'comments' at row 1

MySQL如何插入Emoji表情

實現思路

因為資料庫預設是UTF-8編碼格式,普通的字串佔位3個位元組而表情佔位4位元組,此時UTF-8就不夠用了,需要採用utf8mb4字符集就能解決這個問題了。

注意:utf8mb4字符集要求資料庫版本高於5.5.3。

那麼,我們要做的事情如下所示:

  • 修改mysql配置檔案,設定其編碼格式
  • 修改資料庫字符集編碼
  • 修改資料庫表字符集編碼

實現過程

mysql預設讀取配置的順序為:/etc/my.cnf、/etc/mysql/my.cnf、/usr/local/etc/my.cnf、~/.my.cnf,如果對應目錄下不存在這些配置檔案,則需要自己新建一個。

  • 修改資料庫配置檔案my.cnf,我的檔案位置在: /usr/local/etc下,新增下述程式碼
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect = 'SET NAMES utf8mb4'
character-set-client-handshake = false
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4

  • 修改資料庫字符集編碼,登入mysql後執行下述sql語句。
# 設定資料庫字符集編碼,chat_system為資料庫名稱,根據自己的實際情況而來
ALTER DATABASE chat_system CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  • 修改資料庫表的字符集編碼,登入mysql後執行下述sql語句。
# 設定資料庫表字符集編碼,chat_system.feedback_comment_reply為我的資料庫下對應的表名稱,根據自己的實際情況而來
ALTER TABLE chat_system.feedback_comment_reply CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

完成上述操作後,我們來看看是否修改成功,登入mysql後執行下述sql語句。

SHOW VARIABLES WHERE Variable_name LIKE 'character%' OR Variable_name LIKE 'collation%';

顯示下屬資訊,則表示我們已經修改完成了。

MySQL如何插入Emoji表情

測試用例

我們來往插入一個emoji表情來測試下:

UPDATE chat_system.feedback t SET t.comments = '反饋資訊測試😂' WHERE t.id = 1;

如下所示,沒有報錯,插入成功。

MySQL如何插入Emoji表情

我們用dataGrap檢視下資料庫表中的資料,如下所示,它顯示了一個?,應該是軟體無法識別。

MySQL如何插入Emoji表情

講道理,應該是插入成功了,我們用postman請求介面試下,成功顯示出來了😄。

MySQL如何插入Emoji表情

以上就是MySQL如何插入Emoji表情的詳細內容,更多關於MySQL 插入Emoji表情的資料請關注我們其它相關文章!