• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

让Mysql支持Emoji神情_mysql

mysql 搞代码 7年前 (2018-06-08) 190次浏览 已收录 0个评论

mysql支持Emoji表情

  最近在做一个iPhone上的项目,我负责后端,java开发,DB用的是Mysql,版本5.5.21,编码用的是UTF-8。

  但发现了一个问题,iPhone上有Emoji表情,插入Mysql时失败了,报如下异常:

 

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) 

 

  上百度Google一下,终于找到了答案。UTF-8编码有可能是两个、三个、四个字节。Emoji表情是4个字节,而Mysql的utf8编码最多3个字节,所以数据插不进去。解决方案就是:将Mysql的编码从utf8转换成utf8mb4。网上应该能搜到一大堆修改Mysql编码的方法。

 

我是这么做的,可能有些修改没有必要,但最终我还是解决了问题:

1. 修改my.cnf

 

character-set-server=utf8mb4
default-character-set=utf8mb4

 

修改后重启Mysql

 

2. 以root身份登录Mysql,修改环境变量,将character_set_client,character_set_connection,character_set_database,character_set_results,character_set_server 都修改成utf8mb4

 

3. 将已经建好的表也转换成utf8mb4

命令:

 

alter table TABLE_NAME convert to character set utf8mb4 collate utf8mb4_bin;

 

(将TABLE_NAME替换成你的表名)

 

至此,OK了!

欢迎大家阅读《让Mysql支持Emoji神情_mysql》,跪求各位点评,by 搞代码


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:让Mysql支持Emoji神情_mysql
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址