您好,登錄后才能下訂單哦!
1、問題產(chǎn)生情況
在開發(fā)IM時有些有用的頭像用了emoji表情或者聊天的時候用了emoji表情,然而mysql數(shù)據(jù)庫用的編碼是utf8_general_ci,就是utf-8編碼,結(jié)果也就報錯誤了。emoji表情存不了在數(shù)據(jù)庫。
java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\xAA",...' for column 'raw_json' at row 1
2、為什么會出現(xiàn)這種原因
因為mysql的utf8編碼的一個字符最多3個字節(jié),但是一個emoji表情為4個字節(jié),所以utf8不支持存儲emoji表情。但是utf8的超集utf8mb4一個字符最多能有4字節(jié),所以能支持emoji表情的存儲。
3、解決方案
方案一:修改數(shù)據(jù)庫的編碼集設(shè)置為utf8mb4,無論是數(shù)據(jù)庫還是表,還是字段。雖然會增加存儲,但是這個可以忽略不計。
方案二: 有時候原因不能修改數(shù)據(jù)庫編碼之類的,可以用java對emoji表情進(jìn)行轉(zhuǎn)化編碼,例如emoji-java這種對emoji表情進(jìn)行特殊處理的jar哦,然后保存或者去掉表情,這也是一種折中的解決方案。
emoji-java的下載地址: https://github.com/vdurmont/emoji-java
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。