MySQL数据库存储表情符号出现字符错误的解决方案

首先明确一点:MySQL的utf8并不是真的utf8,因为MySQL的utf8是3个字节进行编码的,而表情符号需要4个字节进行编码

出现的场景

最近在使用MySQL的时候遇到一个坑,在存储表情符号到数据库的时候发现和预想的不一样,一直在排查问题,到后期一直怀疑是自己的sql语句有问题,但最后发现不是因为sql语句的问题,而是字符编码方式不正确导致的。

解决方案

使用utf8mb4

因为utf8mb4能够支持Unicode标准中的所有字符,包括所有新的表情符号

具体步骤

最重要的一点。先备份数据库。别问为什么,问就是血与泪的教训

第一种:使用可视化工具,我以navicat为例

对数据库的修改:
1.打开Navicat,连接到你的MySQL服务器
2.在左侧的数据库列表中,右键点击你想要修改的数据库
3.选择“编辑数据库”或者“数据库属性”,取决于你的Navicat版本
4.找到字符集(Character Set)和排序规则(Collation)的选项
5.将字符集改为utf8mb4
6.点击确定保存更改

对表的修改:
1.展开左侧的数据库结构,找到需要修改的表格
2.右键点击表格,选择“设计表”或者“编辑表结构”
3.在表格结构的设计视图中,通常在底部或者是一个单独的标签页中,可以找到字符集的选项
4.将字符集设置为utf8mb4
5.点击确定保存更改

第二种:使用SQL命令

对数据库的修改:

ALTER DATABASE your_database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;

对表的修改:

ALTER TABLE your_table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

总结

千万别被MySQL的utf8骗了,这只是表象,老实的使用utf8mb4

  • 9
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值