加入收藏 | 设为首页 | 会员中心 | 我要投稿 源码网 (https://www.900php.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

java – 无法使用mysql和hibernate持久化emojis

发布时间:2021-03-07 23:43:36 所属栏目:MySql教程 来源:网络整理
导读:我实际上已在Stackoverflow上多次发现此问题,但解决方案对我没有帮助. 我在我的Android应用程序中有一个聊天模块,并希望在我的服务器数据库中保留消息,这可以正常工作,直到出现像emojis这样的特殊字符. ERROR: Incorrect string value: 'xF0x9Fx98x81'

我实际上已在Stackoverflow上多次发现此问题,但解决方案对我没有帮助.

我在我的Android应用程序中有一个聊天模块,并希望在我的服务器数据库中保留消息,这可以正常工作,直到出现像emojis这样的特殊字符.

ERROR: Incorrect string value: 'xF0x9Fx98x81' for column 'message' at row 1
...
...
Caused by: java.sql.SQLException: Incorrect string value: 'xF0x9Fx98x81' for column 'message' at row 1
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1084)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4232)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4164)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2615)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2776)
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2838)
    at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2082)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2334)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2262)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2246)
    at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:187)
... 23 more

我的环境是:

-Mysql 5.6
-Tomcat 8.0.8
-Hibernate 4.3.5
-JDK 1.8.0_05

这是带有问题的列的用过的表’message’:

这些是我在persistence.xml(2.1版)中的属性:

现在我尝试了以下解决方案,没有效果:

-Change datatype of 'message' from varchar to longtext
-Change collation of 'message' to utf8mb4
-Change collation of table to utf8mb4
-Append url with "?useUnicode=true&characterEncoding=UTF-8"
-Set character-set-server of mysql to utf8mb4

我认为表情符号正确传输到服务器,然后它会持续显示消息,然后将其广播回应用程序并正确显示. 最佳答案 我曾经遇到过同样的问题.我不知道一个漂亮的解决方案,但这对我有用.

创建Session对象后,我手动更改了连接排序规则:

s.doReturningWork(new ReturningWork

(编辑:源码网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读