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: ’xF0x9Fx98x82’ for column ’comments’ at row 1[2020-12-01 21:36:08] [HY000][1366] Incorrect string value: ’xF0x9Fx98x82’ 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 = utf8mb4collation-server = utf8mb4_unicode_ciinit_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表情的資料請關注好吧啦網其它相關文章!
相關文章:
1. 使用mysql記錄從url返回的http GET請求數據操作2. Microsoft Office Access設置字體顏色的方法3. 怎樣在Oracle中執行一次基本的快照復制4. SQL Server 2008通過端口1433連接到主機127.0.0.1的TCP/IP連接失敗5. Oracle的PDB數據庫創建DIRECTORY時遇到ORA-65254問題及解決方法6. Oracle基本語法集錦7. Oracle817 版本 不同字符集之間的數據庫導入8. Oracle 體系結構介紹9. 精細分析Oracle分布式系統數據復制技術10. MySQL數據庫對敏感數據加密及解密的實現方式
