Mac下Mysql的字符集utf8mb4

本文介绍如何在MySQL中正确设置utf8mb4字符集,确保四字节的Emoji表情可以正常插入和显示,同时讨论了my.cnf配置、字符集设置及mybatis和spring框架的兼容性问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

公司需求是5.5.23,而最新版是5.7.11,在我电脑上5.5.23版本Mysql不能重启,所以我是先安装5.7.11关闭掉mysql,再安装回5.5.23让mysql的配置my.cnf生效

[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

将数据库、表、字段都改成了utf8mb4,但是插入的时候四字节的Emoji表情还是插入不成功

经过验证mysqlworkbench和navicat连接上以后执行命令

SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';

可以看到连接的字符集是utf8,而不是utf8mb4,所以插入Emoji表情会乱码,所以执行下面的命令

SET names utf8mb4;

执行完以后,再用mysqlworkbench或者navicat插入表情就不会乱码了

现在就剩下mybatis,spring怎样插入不乱码了,网上说把useUnicode=true和characterEncoding=utf8去掉,但是插入中文会乱码啊,好吧我也不知道重启以后为什么可以插入而不乱码,

useUnicode=true&characterEncoding=utf8还是要保留的


Emoji表情网站  http://www.fuhaodq.com/emoji/  

经测试,只要字段设成了utf8mb4,保存之前,先执行SET names utf8mb4,插入到数据库中也不会乱码,查询的时候如果乱码,也先执行SET names utf8mb4,再查询就不乱码了。

utf8mb4_unicode_ci和utf8mb4_general_ci,网上有对这两种的区别做说明,utf8mb4_unicode_ci排序慢、精度高,utf8mb4_general_ci排序快、精度低,只有在德语和法语中某几个字符作比较的时候才有区别,所以utf8mb4_general_ci完全能够满足需求,推荐使用utf8mb4_general_ci


MySQL中文转换成拼音的函数 http://www.zgguan.com/zsfx/mysql/13453.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值