博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mysql采坑只utf8
阅读量:6979 次
发布时间:2019-06-27

本文共 719 字,大约阅读时间需要 2 分钟。

当然,现在建数据库时,大家一般都会使用utf8mb4,那为什么不适用utf8呢,其实是一个坑。

mysql中的utf8只支持每个字符三个字节,而真正的UTF-8是每个字符最多四字节,这可以算数Mysql的一个bug。在mysql中,真正支持UTF-8的字符集是utf8mb4,占用四个字节。
历史数据是这样的:
2003年,MySQL 从 4.1 版本开始支持 UTF-8,但是这是一个旧版的标准(RFC 2279),新版的UTF-8标准(RFC 3629)是之后才出现的。
RFC 2279最多支持每个字符 6 个字节。但是在2002年9月,MySQL源代码进行了一次调整:“UTF8 现在最多只支持 3 个字节的序列”。至于调整的原因,目前也已经无从考证了。
可以猜测一下,大概是当初的设计者想要占用更少的空间,达到更快的查询速度吧。6个字节有点多,3个字节足够了。但是这也就造成了由于存储空间不够,不能兼容RFC 3629标准。
所以utf8可以说是mysql的独创的一套字符集,并不符合字面给人的认知。人们发现了他的问题之后,期待MySQL进行修复。不过可能是因为种种原因吧,mysql并没有修复utf8的问题,而是在 2010 年重新发布了“utf8mb4”来支持真正的UTF-8。
所以呢,重要的事说三遍。
mysql中,utf8不是真正的支持UTF-8的字符集,utf8mb4才是。
mysql中,utf8不是真正的支持UTF-8的字符集,utf8mb4才是。
mysql中,utf8不是真正的支持UTF-8的字符集,utf8mb4才是。
Mysql采坑只utf8

转载于:https://blog.51cto.com/9443450/2386040

你可能感兴趣的文章
【Python】keras卷积神经网络识别mnist
查看>>
DX11 preprocessor && Dynamic shader linkage
查看>>
手机网站的几点注意
查看>>
XSS跨站脚本攻击
查看>>
paramiko的使用
查看>>
tomcat的startup.bat闪退问题解决
查看>>
你不怕他离职吗?
查看>>
使用Linux进行缓冲区溢出实验的配置记录
查看>>
JavaScript-数据引用类型对象
查看>>
mysql删除开放用户权限
查看>>
17.08.17
查看>>
枚举算法
查看>>
April Fools Contest 2018
查看>>
关于flume配置加载(二)
查看>>
delphi 字符串string转流TStream
查看>>
Lync 小技巧-51-Lync 2013-不加域-客户端-1-下载-证书-信任链
查看>>
awk数组命令经典生产实战应用拓展
查看>>
配套自测连载(二)
查看>>
linux下set和eval的使用小案例精彩解答
查看>>
为什么很多人努力了却死一地
查看>>