1.原因:
UTF-8編碼有可能是兩個(gè)灾馒、三個(gè)秤标、四個(gè)字節(jié)篇亭。Emoji表情是4個(gè)字節(jié)缠捌,而Mysql的utf8編碼最多3個(gè)字節(jié),所以數(shù)據(jù)插不進(jìn)去译蒂。
2.解決方案:
將Mysql的編碼從utf8轉(zhuǎn)換成utf8mb4曼月。詳細(xì)說明如下:
首先停止MySQL Server服務(wù),修改mysql配置文件 my.cnf(其他系統(tǒng))或者mysql.ini(windows系統(tǒng))
[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'
修改完成柔昼,重啟 MySQL 服務(wù):
用MYSQL X.X Command Line Client修改數(shù)據(jù)庫哑芹、表字符集
檢查字符集修改結(jié)果,打開MYSQL X.X Command Line Client
mysql> SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';
修改數(shù)據(jù)庫字符集:
ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
修改表的字符集:
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
修改某個(gè)表的字段字符集:
ALTER TABLE table_name CHANGE column_name? VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
也可安裝Navicat for MySQL工具捕透,在工具上修改數(shù)據(jù)庫和表的字符集
對應(yīng)數(shù)據(jù)庫修改字符集修改
對應(yīng)表修改
對應(yīng)表的字符修改
注意:
1.需要 >= MySQL 5.5.3版本聪姿、(經(jīng)檢測5.5.29的也可以)低版本不支持這個(gè)字符集、復(fù)制報(bào)錯(cuò)
2.如果只是某個(gè)字段需要 只需要修改那個(gè)字段的字符集就可以了
3.另外服務(wù)器連接數(shù)據(jù)庫 Connector/J的連接參數(shù)中激率,不要加characterEncoding參數(shù)咳燕。 不加這個(gè)參數(shù)時(shí)勿决,默認(rèn)值就時(shí)autodetect乒躺。