mysql存储emoji表情
2024-08-26 04:12:01
微信获取的用户昵称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
最新文章
- 一步步构造自己的vue2.0+webpack环境
- ubuntu14.04安装sipp3.2
- 【codevs1907】 方格取数 3
- vim--golang代码补全
- Spring MVC Controller中解析GET方式的中文参数会乱码的问题(tomcat如何解码)
- centos安装异常解决方法
- 为虚拟机搭建MacOSX系统
- BZOJ 4311: 向量( 按时间分治 + 线段树 )
- createElement创建
- python开发部署时新增数据库中表的方法
- Oracle-4 - :超级适合初学者的入门级笔记:plsql,基本语法,记录类型,循环,游标,异常处理,存储过程,存储函数,触发器
- [知了堂学习笔记]_ajax的两种使用方式
- 【一天一道LeetCode】#32. Longest Valid Parentheses
- Javascript高级编程学习笔记(96)—— WebGL(2) 类型化视图
- java并发编程可见性与线程封闭
- SHA256withRSA证书签名,私钥签名/公钥验签
- 中兴iptv机顶盒破解教程图文:亲测中兴B760EV3、B860A、B860AV1.1完美安装应用!非ttl破解![转]
- Python核心编程的四大神兽
- python笔记9-多线程Threading之阻塞(join)和守护线程(setDaemon)
- jquery datatable的详细用法
热门文章
- CodeForces 688A-Opponents
- android 定时器AlarmManager
- 【matlab】用matlab 保存带标记图像、图片的方法总结
- android中图片的三级缓存cache策略(内存/文件/网络)
- php中json_encode UTF-8中文乱码问题
- 使用本地JConsole监控远程JVM (转)
- 【winform 学习】C# 转换成JSON对象
- [DS Basics] Data structures
- HDU 4251 --- 主席树(划分树是正解)
- 回顾Spring框架