MySQL如何插入Emoji表情
前言
今天在設(shè)計(jì)開源項(xiàng)目的反饋信息表時遇到了emoji表情插入失敗的問題,網(wǎng)上找了很多解決方案,答案五花八門,沒找到好使的。
經(jīng)過一番折騰后,終于成功插入了emoji表情,本文就跟大家分享下我的實(shí)現(xiàn)過程,歡迎各位感興趣的開發(fā)者閱讀本文。
寫在前面
我的服務(wù)器是Mac系統(tǒng),mysql使用brew安裝的,windows/linux它的配置文件位置可能有些不一樣,具體根據(jù)真實(shí)情況而定。
先跟大家看下它的報錯信息:
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
實(shí)現(xiàn)思路
因?yàn)閿?shù)據(jù)庫默認(rèn)是UTF-8編碼格式,普通的字符串占位3個字節(jié)而表情占位4字節(jié),此時UTF-8就不夠用了,需要采用utf8mb4字符集就能解決這個問題了。
注意:utf8mb4字符集要求數(shù)據(jù)庫版本高于5.5.3。
那么,我們要做的事情如下所示:
- 修改mysql配置文件,設(shè)置其編碼格式
- 修改數(shù)據(jù)庫字符集編碼
- 修改數(shù)據(jù)庫表字符集編碼
實(shí)現(xiàn)過程
mysql默認(rèn)讀取配置的順序?yàn)椋?etc/my.cnf、/etc/mysql/my.cnf、/usr/local/etc/my.cnf、~/.my.cnf,如果對應(yīng)目錄下不存在這些配置文件,則需要自己新建一個。
- 修改數(shù)據(jù)庫配置文件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
- 修改數(shù)據(jù)庫字符集編碼,登錄mysql后執(zhí)行下述sql語句。
# 設(shè)置數(shù)據(jù)庫字符集編碼,chat_system為數(shù)據(jù)庫名稱,根據(jù)自己的實(shí)際情況而來 ALTER DATABASE chat_system CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- 修改數(shù)據(jù)庫表的字符集編碼,登錄mysql后執(zhí)行下述sql語句。
# 設(shè)置數(shù)據(jù)庫表字符集編碼,chat_system.feedback_comment_reply為我的數(shù)據(jù)庫下對應(yīng)的表名稱,根據(jù)自己的實(shí)際情況而來 ALTER TABLE chat_system.feedback_comment_reply CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
完成上述操作后,我們來看看是否修改成功,登錄mysql后執(zhí)行下述sql語句。
SHOW VARIABLES WHERE Variable_name LIKE 'character%' OR Variable_name LIKE 'collation%';
顯示下屬信息,則表示我們已經(jīng)修改完成了。
測試用例
我們來往插入一個emoji表情來測試下:
UPDATE chat_system.feedback t SET t.comments = '反饋信息測試😂' WHERE t.id = 1;
如下所示,沒有報錯,插入成功。
我們用dataGrap查看下數(shù)據(jù)庫表中的數(shù)據(jù),如下所示,它顯示了一個?,應(yīng)該是軟件無法識別。
講道理,應(yīng)該是插入成功了,我們用postman請求接口試下,成功顯示出來了😄。
以上就是MySQL如何插入Emoji表情的詳細(xì)內(nèi)容,更多關(guān)于MySQL 插入Emoji表情的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
MySQL設(shè)置global變量和session變量的兩種方法詳解
這篇文章主要介紹了MySQL設(shè)置global變量和session變量的兩種方法,每種方法給大家介紹的非常詳細(xì) ,需要的朋友可以參考下2018-10-10linux(Centos7)下安裝mysql8.0.18的教程圖解
這篇文章主要介紹了linux(Centos7)安裝mysql8.0.18的教程,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2019-11-11mysql中刪除數(shù)據(jù)的四種方法小結(jié)
在MySQL數(shù)據(jù)庫中,刪除數(shù)據(jù)是一個常見的操作,它允許從表中移除不再需要的數(shù)據(jù),本文就來介紹一下四種方法,具有一定的參考價值,感興趣的可以了解一下2023-10-10MySQL rand函數(shù)實(shí)現(xiàn)隨機(jī)數(shù)的方法
在mysql中,使用隨機(jī)數(shù)寫一個語句能一下更新幾百條MYSQL數(shù)據(jù)嗎?答案是肯定的,使用MySQL rand函數(shù),就可以使現(xiàn)在隨機(jī)數(shù)2016-09-09Centos7 安裝mysql 8.0.13(rpm)的教程詳解
這篇文章主要介紹了Centos7 安裝mysql 8.0.13(rpm)的教程詳解,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2018-11-11windows 64位下mysql 8.0.13 安裝配置方法圖文教程
這篇文章主要為大家詳細(xì)介紹了windows 64位下mysql 8.0.13 安裝配置方法圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-11-11mysql 存儲過程判斷重復(fù)的不插入數(shù)據(jù)
這篇文章主要介紹了下面是一個較常見的場景,判斷表中某列是否存在某值,如果存在執(zhí)行某操作,需要的朋友可以參考下2017-01-01