您现在的位置是:网站首页 > 代码编程 > 数据库数据库

【原】MySQL字符集utf8、utf8mb4、utf8mb4_general_ci、utf8mb4_unicode_ci的区别

不忘初心 不忘初心 2019-04-15 围观() 评论() 点赞() 数据库

简介:MySQL为我们提供了很多种字符集:utf8、utf8mb4、utf8mb4_general_ci、utf8mb4_unicode_ci,来应对不同的问题场景,它们都有什么区别呢?

MySQL为我们提供了很多种字符集,来应对不同的问题场景,平时工作中没有过多关注,今天来做一下笔记。

utf8:

最大只支持3个字节的UTF-8字符,包含了大多数字符但并不是所有,而emoji和一些不常用的汉字,如“墅”,这些需要四个字节才能编码的就不支持。

utf8mb4:

在5.5.3版本之后增加了tf8mb4编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode,与之前的utf8字符集相比,可用性更高。

但相对于utf8来说,字节变多,数据库体积也就会变得更大,官方强烈推荐使用varchar而不要使用char,这样可以让字段有更好的伸缩性,从而稍微缓解一下空间消耗的问题。

MySQL字符集utf8、utf8mb4、utf8mb4_general_ci、utf8mb4_unicode_ci的区别

除了字符集,还有一个排序规则,在mysql中还有排序字符集的概念,对应上图中的排序规则,而在每张表的详细信息中,也可以看到这个排序规则,如果没有特殊指定,就会跟数据库保持一致

MySQL字符集utf8、utf8mb4、utf8mb4_general_ci、utf8mb4_unicode_ci的区别

而这个排序规则,在不同字符集下的写法也不一样,如果字符集是utf8,那么排序规则就是utf8_general_ci和utf8_unicode_ci;如果字符集是utf8mb4,那么排序规则就是utf8mb4_general_ci和utf8mb4_unicode_ci。

其实区别也不大,每一种字符集都对应的有general_ci和unicode_ci两种排序规则,那这两种排序规则有什么区别呢?

utf8mb4_unicode_ci:

基于标准的Unicode来排序和比较,能够在各种语言之间精确排序,在特殊情况下,Unicode排序规则为了能够处理特殊字符的情况,实现了略微复杂的排序算法,所以兼容度比较高,但是性能不高。

utf8mb4_general_ci:

没有实现Unicode排序规则,在遇到某些特殊语言或者字符集,排序结果可能不一致,但是在比较和排序的时候速度更快。

mysqlutf8utf8mb4字符集

看完文章,有任何疑问,请加入群聊一起交流!!!

很赞哦! ()

文章评论

  • 请先说点什么
    人参与,条评论

请使用电脑浏览器访问本页面,使用手机浏览器访问本页面会导致下载文件异常!!!

雨落无影

关注上方公众号,回复关键字【下载】获取下载码

用完即删,每次下载需重新获取下载码

若出现下载不了的情况,请及时联系站长进行解决

站点信息

  • 网站程序:spring + freemarker
  • 主题模板:《今夕何夕》
  • 文章统计:篇文章
  • 标签管理标签云
  • 微信公众号:扫描二维码,关注我们