1.原則
如果要實現儲存emoji表情到MySQL例項,需要客戶端、到MySQL例項的連線、MySQL例項內部 3 個方面統一使用或者支援 utf8mb4 字符集。
2.三個條件說明
2.1 客戶端
以常見的 JDBC 連線為例:
對於 JDBC 連線,需要使用 MySQL Connector/J 5.1.13(含)以上的版本。
JDBC 的連線串中,建議不配置 characterEncoding 選項。
複製程式碼
2.2 MySQL例項的連線
通過 set names 命令設定會話字符集
在程式碼中指定連線的字符集為 utf8mb4,樣例程式碼如下:
String query = “set names utf8mb4”; stat.execute(query);
或者
druidDataSource.setConnectionInitSqls(Collections.singleton("SET NAMES utf8mb4"));
複製程式碼
2.3 MySQL例項內部
修改庫:
ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
修改表:
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
修改一列:
ALTER TABLE table_name CHANGE column_name column_name VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
複製程式碼
備註: 修改庫和修改表通過那個Sql或者在Navicat這種視覺化工具裡修改一下兩種方式都可以。
但是
修改一列不行,如果表中的資料之前是格式為utf8 那麼你通過視覺化工具修改相當於新增的資料按照utf8mb4來儲存的,老的資料還是utf8來儲存的,這樣執行sql查詢的時候,還是會報不支援emoji表情錯誤。所以保險一點,還是執行上面的sql語句,不要通過視覺化工具修改