标签: mysql emoji 2016-05-19 10:24 1922人阅读 评论(0) 收藏 举报 分类: 数据库(4)
版权声明:本文为博主原创文章,未经博主容许不得转载。java
手机端插入Emoji表情,保存到数据库时报错:mysql
Caused by: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x84' for column 'review' at row 1 at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4096) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4028) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2490) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2651) at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2734) at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2155) at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2458)sql
经检查缘由: UTF-8编码有多是两个、三个、四个字节。Emoji表情是4个字节,而MySQL的utf8编码最多3个字节,因此数据插不进去。数据库
解决方案:将Mysql的编码从utf8转换成utf8mb4。编码
2. 在后台配置mysql链接参数中,不要加characterEncoding参数。 不加这个参数时,默认值就时autodetect。code
TABLE_NAME
CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; (将TABLE_NAME替换成你的表名)TABLE_NAME
MODIFY COLUMN COLUMN_NAME
text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;