問(wèn)題分析
- 普通的字符串或者表情都是占位3個(gè)字節(jié)因悲,所以u(píng)tf8足夠用了,但是移動(dòng)端的表情符號(hào)占位是4個(gè)字節(jié)勺爱,普通的utf8就不夠用了晃琳,為了應(yīng)對(duì)無(wú)線互聯(lián)網(wǎng)的機(jī)遇和挑戰(zhàn)、避免 emoji 表情符號(hào)帶來(lái)的問(wèn)題邻寿、涉及無(wú)線相關(guān)的 MySQL 數(shù)據(jù)庫(kù)建議都提前采用 utf8mb4 字符集蝎土,這必須要作為移動(dòng)互聯(lián)網(wǎng)行業(yè)的一個(gè)技術(shù)選型的要點(diǎn)
- Mysql 版本的限制,Mysql 5.5.3之前的版本绣否,支持的utf8為3字節(jié)的誊涯,Mysql 5.5.3之后的版本支持utf8mb4
解決方案
- 修改mysql的配置文件,windows下的為my.ini(linux下的為my.cnf)蒜撮,修改的內(nèi)容都一樣
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
- 將數(shù)據(jù)庫(kù)中對(duì)應(yīng)的字段暴构,改為utf8mb4_general_ci
- 修改項(xiàng)目中的連接數(shù)據(jù)庫(kù)的url,將characterEncoding=utf-8去掉段磨,此步驟一定要進(jìn)行
Incorrect string value: '\xF0\x9F\x98\x82\xF0\x9F...' for column 'question' at row 1