mysql 字符集 很多utf8_mysql字符集utf8和utf8mb4编码问题

2ff34e647e2e3cdfd8dca593e17d9b0a.png

最近看了一篇文章是关于Mysql中utf-8编码问题的,我们在Mysql中用到的utf8实际上不是真正的UTF-8,在Mysql中utf8mb4才是真正的UTF-8。

在有些地方看到说utf8mb4相比于utf8是为了解决emoji(就是我们聊天的时候笑脸表情)问题,感觉这种说法对但是不完全对。utf8mb4相当于utf8的一个扩展,出现utf8mb4是因为现在Mysql中的utf8已经不能满足我们对字符编码的需求了。

Mysql从4.1 版本开始支持 UTF-8,最大字符长度为 3 字节,三个字节的 UTF-8 最大能编码的 Unicode 字符是 0xFFFF,也就是 Unicode 中的基本多文平面(BMP)。也就是说,任何不在基本多文平面的 Unicode字符,都无法使用MySQL原有的 utf8 字符集存储。这些不在BMP中的字符包括哪些呢?最常见的就是Emoji 表情(Emoji 是一种特殊的 Unicode 编码,常见于 ios 和 android 手机上),和一些不常用的汉字,以及任何新增的 Unicode 字符等等。于是在MySQL5.5.3版本后就有了utf8mb4,它支持四个字节编码在utf8消耗空间一些,但是它可以支持跟多的字符。

所以,在我们最新设计数据库的时候最好使用utf8mb4字符集,同时使用varchar代替char类型。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值