UTF-8是使用1~4个字节,一种变长的编码格式,字符编码。mb4即 most bytes 4,使用4个字节来表示完整的UTF-8。

mysql的 utf8 编码最大字符长度为 3 字节,如果遇到 4 字节的宽字符就会插入异常了。三个字节的 UTF-8 最大能编码的 Unicode 字符是 0xffff,也就是 Unicode 中的基本多文种平面(BMP)。也就是说,任何不在基本多文本平面的 Unicode字符,都无法使用 Mysql 的 utf8 字符集存储。包括 Emoji 表情(Emoji 是一种特殊的 Unicode 编码,常见于 ios 和 android 手机上),和很多不常用的汉字,以及任何新增的 Unicode 字符等等。

总结:MySQL的utf8是utfmb3,只有三个字节,节省空间但不能表达全部的UTF-8。所以推荐使用utf8mb4。

utf8mb4_bin:将字符串每个字符用二进制数据编译存储,区分大小写,而且可以存二进制的内容。

utf8mb4_general_ci:ci即case insensitive,不区分大小写。没有实现Unicode排序规则,在遇到某些特殊语言或者字符集,排序结果可能不一致。但是,在绝大多数情况下,这些特殊字符的顺序并不需要那么精确。

utf8mb4_unicode_ci:是基于标准的Unicode来排序和比较,能够在各种语言之间精确排序,Unicode排序规则为了能够处理特殊字符的情况,实现了略微复杂的排序算法。

utf8mb4_general_ci是一个遗留的 校对规则,不支持扩展,它仅能够在字符之间进行逐个比较。utf8_general_ci校对规则进行的比较速度很快,但是与使用 utf8mb4_unicode_ci的校对规则相比,比较正确性较差。

总结:general_ci 更快,unicode_ci 更准确。但相比现在的CPU来说,它远远不足以成为考虑性能的因素,索引涉及、SQL设计才是。使用者更应该关心字符集与排序规则在db里需要统一。(可能产生乱码的字段不要作为主键或唯一索引。例如:以 url 来作为唯一索引,但是它记录的有可能是乱码。)

Mysql的utf8与utf8mb4区别,utf8mb4_bin、utf8mb4_general_ci、utf8mb4_unicode_ci区别相关推荐

  1. 【Mysql】utf8与utf8mb4区别,utf8mb4_bin、utf8mb4_general_ci、utf8mb4_unicode_ci区别

    一.utf8与utf8mb4区别 UTF8 UTF8mb4 使用1~4个字节,变长的编码格式 mb4即 most bytes 4,使用4个字节来表示完整的UTF-8 最大字符长度为 3 字节,如果遇到 ...

  2. mysql中utf8和utf8mb4的详解用法与区别

    一.简介 MySQL在5.5.3之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode.好在utf8mb4是utf8的超集,除了将编码改为ut ...

  3. 全面了解mysql中utf8和utf8mb4的区别

    一.简介 MySQL在5.5.3之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode.好在utf8mb4是utf8的超集,除了将编码改为ut ...

  4. MySQL的utf8与utf8mb4编码,以及utf8_bin、utf8_general_ci编码区别

    utf8和utf8mb4的区别 一.简介 MySQL在5.5.3之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode.utf8mb4是utf ...

  5. MySQL中 utf8 和 utf8mb4 的区别,以及 general_ci 、unicode_ci和unicode_520_ci的区别

    首先了解什么是Unicode: Unicode是一种信息技术(IT)标准,用于对世界上大多数书写系统中表示的文本进行一致的编码,表示和处理. 大致意思就是Unicode对英文字符.符号.汉字.表情符号 ...

  6. mysql字符集 utf8 和utf8mb4 的区别

    文章目录 @[toc] 总结速览 什么是编码?什么是 UTF-8? mysql中的utf8与utf8mb4 为什么使用utf8mb4 总结 最后 用mysql创建数据库表时,一般都会选择用utf-8编 ...

  7. 浅谈MySQL中utf8和utf8mb4的区别

    一.什么是UTF8MB4? 我们在使用PhpMyAdmin管理面板时,可以在首页看到名为"Server connection collation"(服务器连接排序规则)的选项,用来 ...

  8. 清官谈mysql中utf8和utf8mb4区别,请使用utf8mb4

    一.简介 MySQL在5.5.3之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode.好在utf8mb4是utf8的超集,除了将编码改为ut ...

  9. 清官谈mysql中utf8和utf8mb4区别

    转载地址: http://ourmysql.com/archives/1402 utf8mb4可以保存一些表情,然后utf8mb4是utf8的超集,我就记住这些哈下面转载内容 一.简介 MySQL在5 ...

最新文章

  1. Go -- 多个go文件包名都是main
  2. 数据结构与算法分析-第2章
  3. 51nod 1536不一样的猜数游戏 思路:O(n)素数筛选法。同Codeforces 576A Vasya and Petya‘s Game。
  4. pytorch中resnet_ResNet代码详解
  5. 学习笔记~~~~~Set接口实现
  6. BZOJ1607 [Usaco2008 Dec]Patting Heads 轻拍牛头 筛法
  7. 软考信息系统项目管理师_信息系统项目管理基础---软考高级之信息系统项目管理师008
  8. c语言机器人跑三角形图形,一种三角形物件运输机器人的制作方法
  9. Noob 靶场渗透记录
  10. 五光十色变色龙的制作
  11. 初识智遥工作流软件——表单开发篇2
  12. 5G差异化业务场景需求及网络切片(1)
  13. 面试中如何回答“你的缺点是什么?”
  14. 简单的tcpdump抓包使用总结:抓取指定ip、指定网卡、指定端口的包
  15. 图片无缝滚动BootStrap 轻松实现
  16. css实现六边形及其它灵活布局
  17. 校招经验 | 三无菜鸡水硕如何拿到多个高薪offer?
  18. IBPS平台应用于南方电网总部运营管控平台
  19. 鞍山市2021中高考成绩查询,2021年鞍山高中学校排名及录取分数线排名
  20. 肖特基二极管的这几点技术参数,你未必全都知道

热门文章

  1. python os.urandom()函数和十六进制\xhh的一些认识
  2. wdk与DDK有什么区别
  3. A代表数字1,B代表数字2,以此类推Z代表26
  4. Qt | QTableView的使用方法
  5. Python学习记录day6-反射、常用模块
  6. Win10 wsl-安装教程
  7. 分页插件PageHelper失效
  8. Intel Distiller工具包-量化实现3
  9. 窗函数(window function)
  10. 如何在 Linux 服务器上安装 Red5?