MySQL如何插入Emoji表情
阿新 • • 發佈:2020-12-03
前言
今天在設計開源專案的反饋資訊表時遇到了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
實現思路
因為資料庫預設是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%';
顯示下屬資訊,則表示我們已經修改完成了。
測試用例
我們來往插入一個emoji表情來測試下:
UPDATE chat_system.feedback t SET t.comments = '反饋資訊測試😂' WHERE t.id = 1;
如下所示,沒有報錯,插入成功。
我們用dataGrap檢視下資料庫表中的資料,如下所示,它顯示了一個?,應該是軟體無法識別。
講道理,應該是插入成功了,我們用postman請求介面試下,成功顯示出來了😄。
以上就是MySQL如何插入Emoji表情的詳細內容,更多關於MySQL 插入Emoji表情的資料請關注我們其它相關文章!