關(guān)于MYSQL保存emoji表情及openfire處理辦法 在開發(fā)移動應(yīng)用的時候,用戶在輸入了emoji表情后,系統(tǒng)異常,我是做服務(wù)器端的,發(fā)現(xiàn)錯誤如下: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\x94' for column 'name' at row 1at com.mysql.jdbc
關(guān)于MYSQL保存emoji表情及openfire處理辦法在開發(fā)移動應(yīng)用的時候,用戶在輸入了emoji表情后,系統(tǒng)異常,我是做服務(wù)器端的,發(fā)現(xiàn)錯誤如下:
java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\x94' for column 'name' at row 1 at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3593) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3525) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1986) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2140) at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2620) at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1662) at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1581)
?網(wǎng)上有解決辦法。就是把數(shù)據(jù)庫對應(yīng)字段編碼改為utf8mb4,這個編碼可以看做是utf8升級版,完全向下兼容utf8,所以基本不用擔心有什么亂碼問題。
但是在openfire也做相同處理以支持發(fā)emoji表情的時候,發(fā)現(xiàn)只改字段編碼還是不行。各種和之前的表進行對比,發(fā)現(xiàn)沒什么不同;思前想后,覺得問題不是出在數(shù)據(jù)庫上,應(yīng)該是連接驅(qū)動有問題!果然,openfire用的驅(qū)動包是mysql.jar,沒看是什么版本;我把之前好使的mysql驅(qū)動包拿來,果然可以了!
?
總結(jié):
讓mysql支持保存emoji表情,需進行如下兩步。
1、數(shù)據(jù)庫對應(yīng)字段編碼改為utf8mb4;
2、mysql連接驅(qū)動至少在5.1.16以上,我用的是mysql-connector-java-5.1.16-bin.jar
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com