Mysql utf8mb64字符集

使用的mysql5.7版本 

默认存储引擎:InnoDB

 

例子:

深圳市福田区福华路318号福?苑
深圳市福田区福华路318号福鑫苑

?
11011000010000011101110011111110


1001010001101011

 

create table test
(
  str varchar(100),
  str2 text
)

字符串为Emoj表情内容,还有一些生僻字,每个字符占用4个字节,在Mysql中默认最大支持3个字节,超长了,所以报错了。
insert into test(str2) values('深圳市福田区福华路318号福?苑15D')
> 1366 - Incorrect string value: '\xF0\xA0\x93\xBE\xE8\x8B...' for column 'str2' at row 1
> 时间: 0s

 

 

MySQL在5.5.3之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode。
好在utf8mb4是utf8的超集,除了将编码改为utf8mb4外不需要做其他转换。当然,为了节省空间,一般情况下使用utf8也就够了。

在utf8mb4字符集下,字符串的char类型会多消耗一些空间,根据 Mysql官方建议,使用varchar代替char类型。

 

Emoji是一种特殊的Unicode编码,常见于ios和 android 手机上,和一些不常用的汉字,以及任何新增的 Unicode 字符等等
如果版本支持(MySQL5.5.3及以上),为了获得更好的兼容性,建议使用utf8mb4字符集。

 

结论:

常规管理系统,使用utf8字符集即可,节约空间。

但如果数据来自移动端,有兼容性要求的。强烈建议使用utf8mb4字符集。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值