帶表情字元插入mysql欄位報錯問題處理 Incorrect string value: ‘\xF0\xA5\x8C\x93\xE5\x85...‘ for column ‘nickNa
阿新 • • 發佈:2020-11-25
今天在處理資料的時候出現這個錯誤
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