1. 程式人生 > 資料庫 >帶表情字元插入mysql欄位報錯問題處理 Incorrect string value: ‘\xF0\xA5\x8C\x93\xE5\x85...‘ for column ‘nickNa

帶表情字元插入mysql欄位報錯問題處理 Incorrect string value: ‘\xF0\xA5\x8C\x93\xE5\x85...‘ for column ‘nickNa

今天在處理資料的時候出現這個錯誤

Incorrect string value: '\xF0\xA5\x8C\x93\xE5\x85...' for column 'nickName' at row 126; nested exception is java.sql.SQLException: Incorrect string value: '\xF0\xA5\x8C\x93\xE5\x85...' for column 'nickName' at row 126

在網上搜了幾個答案,告知的原因是UTF-8編碼有可能是兩個、三個、四個位元組。Emoji表情是4個位元組,而的utf8編碼最多3個位元組,所以資料插不進去。


解決方案:將編碼從utf8轉換成utf8mb4。

這裡一定要注意這個細節,我在解決的時候就出現了這個問題,自己也沒注意到:就是在設定表的字符集後同時也要設定對應插入列的字符集

具體修改的sql如下所示:

Alter table `my_test`.`t_user_info`
charset=utf8mb4

Alter table `my_test`.`t_user_info`
change `nickName` `nickName` varchar(32) CHARSET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '暱稱'

如果問題還未解決,保證引數設定如下所示,我的mysql配置資訊這樣問題就解決了。

SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%'; 

確保這個配置項:character-set-server=utf8mb4