微信获取的用户昵称nickname中带有emoji表情,转换成字符码后是这种形式“\xF0\x9F\x91\x8D\xE6\x94...”,

直接保存可能出现以下错误

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)

经检查原因:

UTF-8编码有可能是两个、三个、四个字节。Emoji表情是4个字节,而Mysql的utf8编码最多3个字节,所以数据插不进去。

解决方案:将Mysql的编码从utf8转换成utf8mb4。

步奏1:修改my.ini 文件 [mysqld] character-set-server=utf8mb4

步奏2:在Connector/J的连接参数中,不要加characterEncoding参数。 不加这个参数时,默认值就时autodetect。

jdbc.driver_class com.mysql.jdbc.Driver
jdbc.url jdbc\:mysql\://127.0.0.1\:3306/jlbmg?useUnicode\=true
#&characterEncoding\=utf8
jdbc.username root
jdbc.password root

步奏3: 将已经建好的表也转换成utf8mb4
命令:ALTER TABLE `TABLE_NAME` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; (将TABLE_NAME替换成你的表名)

alter table `TABLE_NAME` convert to character set utf8mb4 collate utf8mb4_general_ci;

步奏4:将需要使用emoji的字段设置类型为utf8mb4:

命令:alter table `TABLE_NAME`modify column `COLUMN_NAME`  text character set utf8mb4 collate utf8mb4_general_ci;

 步奏5:重启mysql: 

开始->运行->cmd
停止:net stop mysql
启动:net start mysql

最新文章

  1. 一步步构造自己的vue2.0+webpack环境
  2. ubuntu14.04安装sipp3.2
  3. 【codevs1907】 方格取数 3
  4. vim--golang代码补全
  5. Spring MVC Controller中解析GET方式的中文参数会乱码的问题(tomcat如何解码)
  6. centos安装异常解决方法
  7. 为虚拟机搭建MacOSX系统
  8. BZOJ 4311: 向量( 按时间分治 + 线段树 )
  9. createElement创建
  10. python开发部署时新增数据库中表的方法
  11. Oracle-4 - :超级适合初学者的入门级笔记:plsql,基本语法,记录类型,循环,游标,异常处理,存储过程,存储函数,触发器
  12. [知了堂学习笔记]_ajax的两种使用方式
  13. 【一天一道LeetCode】#32. Longest Valid Parentheses
  14. Javascript高级编程学习笔记(96)—— WebGL(2) 类型化视图
  15. java并发编程可见性与线程封闭
  16. SHA256withRSA证书签名,私钥签名/公钥验签
  17. 中兴iptv机顶盒破解教程图文:亲测中兴B760EV3、B860A、B860AV1.1完美安装应用!非ttl破解![转]
  18. Python核心编程的四大神兽
  19. python笔记9-多线程Threading之阻塞(join)和守护线程(setDaemon)
  20. jquery datatable的详细用法

热门文章

  1. CodeForces 688A-Opponents
  2. android 定时器AlarmManager
  3. 【matlab】用matlab 保存带标记图像、图片的方法总结
  4. android中图片的三级缓存cache策略(内存/文件/网络)
  5. php中json_encode UTF-8中文乱码问题
  6. 使用本地JConsole监控远程JVM (转)
  7. 【winform 学习】C# 转换成JSON对象
  8. [DS Basics] Data structures
  9. HDU 4251 --- 主席树(划分树是正解)
  10. 回顾Spring框架