設(shè)置mysql支持emoji


什么是emoji

emoji在誕生之初有多種標準愿待,所以早期兼容性是個問題浩螺。但是現(xiàn)在已經(jīng)標準化了,是unicode的一部分仍侥∫觯可以認為,跟字母农渊、漢字一樣患蹂,emoji就是unicode中一個普通的字符

但是emoji通過utf-8編碼后,每個字符占4個字節(jié)腿时,屬于寬字符况脆。而老版本的mysql只支持一個字符占3個字節(jié),所以老版本的mysql是無法存儲emoji的批糟。新版本的mysql增加了字符集utf8mb4格了,可以支持單字符最多占4個字節(jié)。utf8mb4是utf8的超集徽鼎,可以無需修改地支持原來的utf8字符

要讓mysql存儲emoji盛末,需要滿足2個條件:

1、mysql的charset設(shè)置為utf8mb4

2否淤、客戶端連接mysql的驅(qū)動悄但,也需要設(shè)置為utf8mb4

mysql設(shè)置charset為utf8mb4

1、需要設(shè)置數(shù)據(jù)庫實例的character_set_server參數(shù)為UTF8mb4

2石抡、設(shè)置數(shù)據(jù)庫字符集為utf8mb4

3檐嚣、設(shè)置表的字符集為UTF8mb4

4、如果不設(shè)置表的字符集為UTF8mb4啰扛,也可以設(shè)置單獨某個列的字符集為UTF8mb4

對于新開發(fā)的應(yīng)用柱衔,建議都把數(shù)據(jù)庫的字符集設(shè)置為UTF8mb4胃榕,以免后期遷移的麻煩

客戶端連接mysql驅(qū)動

以node.js為例,需要設(shè)置charset參數(shù)為UTF8MB4_GENERAL_CI,全大寫

其他平臺如java脆炎,php聚霜,也需要做類似的配置

至于最終呈現(xiàn)的地方效五,包括html頁面噩茄、iOS客戶端,經(jīng)實驗發(fā)現(xiàn)续徽,不需要特殊的設(shè)置蚓曼,自然可以輸入和展示emoji字符

不支持emoji的客戶端

有些客戶端不支持emoji,或者支持得不充分炸宵。我實驗了一下:

navicat for mysql完全無法正確展示已經(jīng)入庫的emoji字符

webstorm也無法完全正確展示辟躏,部分emoji字符被截斷而展示不全

CocoaRestClient可以完美展示,借助復(fù)制粘貼土全,也可以輸入emoji字符


mac上搜到mysql

1. terminal輸入 which mysql

2. 找到mysql位置?/Applications/XAMPP/bin/mysql

3. 找my.cnf位置

輸入? mysql --help or mysql --help | grep my.cnf

得到 /Applications/XAMPP/xamppfiles/etc/my.cnf ~/.my.cnf?

4. 修改my.cnf的內(nèi)容

找到后請在以下三部分里添加如下內(nèi)容nano修改:

[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'

5. 重啟mysql

6. 核對輸入?

a.)輸入命令:mysql捎琐,進入mysql命令行(如果提示沒權(quán)限会涎,可以嘗試輸入mysql -uroot -p你的密碼)

b.)在mysql命令行中輸入:SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%';

檢查是否如下:

+--------------------------+--------------------+

| Variable_name? ? ? ? ? ? | Value? ? ? ? ? ? ? |

+--------------------------+--------------------+

| character_set_client? ? | utf8mb4? ? ? ? ? ? |

| character_set_connection | utf8mb4? ? ? ? ? ? |

| character_set_database? | utf8mb4? ? ? ? ? ? |

| character_set_filesystem | binary? ? ? ? ? ? |

| character_set_results? ? | utf8mb4? ? ? ? ? ? |

| character_set_server? ? | utf8mb4? ? ? ? ? ? |

| character_set_system? ? | utf8? ? ? ? ? ? ? |

| collation_connection? ? | utf8mb4_unicode_ci |

| collation_database? ? ? | utf8mb4_unicode_ci |

| collation_server? ? ? ? | utf8mb4_unicode_ci |

+--------------------------+--------------------+

rows in set (0.00 sec)

然后進入mysql客戶端修改具體的數(shù)據(jù)庫和表格!瑞凑!


ALTER DATABASE _htsha CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;

ALTER TABLE `_goods` CONVERT TO? ? ? ? ? ? ? ? ? ? ? ? CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; #將TABLE_NAME替換成你的表名

ALTER TABLE `_supplier` CONVERT TO? ? ? ? ? ? ? ? ? ? ? ? CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; #將TABLE_NAME替換成你的表名

ALTER TABLE `_comment` CONVERT TO? ? ? ? ? ? ? ? ? ? ? ? CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; #將TABLE_NAME替換成你的表名

#ALTER TABLE table_name modify name text charset utf8mb4;

ALTER TABLE `_goods` MODIFY COLUMN `goods_brief` varchar(255)? CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

ALTER TABLE `_goods` MODIFY COLUMN `goods_brief` varchar(2550);

ALTER TABLE `_goods` MODIFY COLUMN? `goods_desc` TEXT? CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

ALTER TABLE `_supplier` MODIFY COLUMN? `name` varchar(256)? CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

ALTER TABLE `_comment` MODIFY COLUMN? `comment` varchar(6550)? CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

#SHOW VARIABLES WHERE Variable_name LIKE "character_set_%" OR Variable_name LIKE 'collation%'

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末末秃,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子籽御,更是在濱河造成了極大的恐慌练慕,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件技掏,死亡現(xiàn)場離奇詭異铃将,居然都是意外死亡,警方通過查閱死者的電腦和手機哑梳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進店門劲阎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人鸠真,你說我怎么就攤上這事悯仙。” “怎么了吠卷?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵锡垄,是天一觀的道長。 經(jīng)常有香客問我祭隔,道長货岭,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任疾渴,我火速辦了婚禮茴她,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘程奠。我一直安慰自己,他們只是感情好祭钉,可當我...
    茶點故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布瞄沙。 她就那樣靜靜地躺著,像睡著了一般慌核。 火紅的嫁衣襯著肌膚如雪距境。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天垮卓,我揣著相機與錄音垫桂,去河邊找鬼。 笑死粟按,一個胖子當著我的面吹牛诬滩,可吹牛的內(nèi)容都是我干的霹粥。 我是一名探鬼主播,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼疼鸟,長吁一口氣:“原來是場噩夢啊……” “哼后控!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起空镜,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤浩淘,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后吴攒,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體张抄,經(jīng)...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年洼怔,在試婚紗的時候發(fā)現(xiàn)自己被綠了署惯。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片茴厉。...
    茶點故事閱讀 39,722評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡泽台,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出矾缓,到底是詐尸還是另有隱情嗜闻,我是刑警寧澤琉雳,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站绪妹,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏蜂嗽。R本人自食惡果不足惜植旧,卻給世界環(huán)境...
    茶點故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一熟呛、第九天 我趴在偏房一處隱蔽的房頂上張望宽档。 院中可真熱鬧,春花似錦庵朝、人聲如沸吗冤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽椎瘟。三九已至,卻和暖如春侄旬,著一層夾襖步出監(jiān)牢的瞬間肺蔚,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工儡羔, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留婆排,地道東北人。 一個月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓笔链,卻偏偏與公主長得像,于是被迫代替她去往敵國和親腮猖。 傳聞我的和親對象是個殘疾皇子鉴扫,可洞房花燭夜當晚...
    茶點故事閱讀 44,614評論 2 353

推薦閱讀更多精彩內(nèi)容