本文爲如何系列,主要聚焦解決mysql存儲emoji表情的問題
文章將首發於ShuSheng007的博客 歡迎大家關注
問題
需要在MySql數據庫中存儲emoji表情,但發現數據庫報錯。
原因
由於最初新建數據庫的時候採用了utf8
編碼方式,在mysql中這種編碼方式每個字符使用3個字節編碼,而emoji
符合由4個字節表示,所以就無法存儲了。
解決方案
將Mysql數據庫和表的編碼方式改成utf8mb4
,其最大可以使用4個字節編碼字符,所以可以編碼emoji
符號
具體實施
- 修改對應數據庫的編碼爲
utf8mb4
ALTER DATABASE your_database CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
- 修改對應表的編碼爲
utf8mb4
ALTER TABLE your_table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- 修改對應表的對應列的字符集爲
utf8mb4
,實踐證明此步驟爲可選步驟,我沒有執行此步驟也成功了。ALTER TABLE your_table_name MODIFY column_name TEXT CHARSET utf8mb4;
note:值得注意的是數據庫的鏈接中我使用了useUnicode=true
參數。
jdbc:mysql://you db remote url:3306/sstxdb?useUnicode=true
總結
如果生活像程序一樣,一個問題的出現總是存在如何解決的方案就好了。。。