首页 > 其他分享 >utf8与utf8mb4之间的区别

utf8与utf8mb4之间的区别

时间:2022-10-15 19:23:33浏览次数:43  
标签:编码 字节 区别 utf8 utf8mb4 Unicode 字符

刚才在navigate中创建表格时未找到utf8,但看到了比较相似的utf8mb4.

所以对这两个编码之间的区别进行了搜索,得到总结,可以将utf8mb4看成utf8的升级版。

以下是搜索到的资料。

一、存储编码简介

GBK编码专门用来解决中文编码的,是双字节的。不论中英文都是双字节的。

UTF-8编码中,一个英文字符占用一个字节的存储空间,一个中文(含繁体)占用三个字节的存储空间。

UTF-8mb4支持4个字节的存储,如emoji表情。

ASCII编码中,一个英文字母(不分大小写)占用一个字节的空间,一个中文汉字占用两个字节的空间。一个二进制的数字序列,在计算机中作为一个数字单元存储时,一般为8位二进制数,换算为十进制。最小值0,最大值255。

Unicode编码中,一个英文占用两个字节的存储空间,一个中文(含繁体)占用两个字节的存储空间。

UTF-16编码中,一个英文字母字符或一个汉字字符存储都需要占用2个字节的存储空间(Unicode扩展区的一些汉字存储需要4个字节)。

UTF-32编码中,世界上任何字符的存储都需要占用4个字节的存储空间。

二、范围

(1)、GBK包含全部中文字符;
(2)、 UTF-8则包含全世界所有国家需要用到的字符。
(3)、utf8mb4专门用来兼容四字节的unicode。utf8mb4是utf8的超集,除了将编码改为utf8mb4外不需要做其他转换。

三、为何要增加utf8mb4编码

MySQL在5.5.3版本以后增加了utf8mb4编码,其中mb4是most bytes 4的含义,用来兼容四个字节的Unicode(万国码)。utf8mb4是utf8的一个扩展。

那上面说了既然utf8能够存下大部分中文汉字,那为什么还要使用utf8mb4呢?

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

标签:编码,字节,区别,utf8,utf8mb4,Unicode,字符
From: https://www.cnblogs.com/DREAM2021/p/16794829.html

相关文章

  • Docker | dockerfile构建centos镜像,以及CMD和ENTRYPOINT的区别
    构建自己的centos镜像dockerpullcentos下载下来的镜像都是基础版本,缺少很多常用的命令功能,比如:ll、vim等等,下面介绍制作一个功能较全的自己的centos镜像。步骤1、编......
  • Nginx rewrite 的last、break、redirect、permanent区别
    Nginxrewrite的last、break、redirect、permanent有四种模式: last和break都会跳转的rewrite的地址,区别是:last跳转后,会重新发起请求再匹配一次location,而break则只......
  • python中sort()函数跟sorted()函数的用法及区别
    一、描述sorted()函数是用来对某个对象进行排序操作的函数sorted()函数与sort()函数的区别是:sort只能用于列表对象(list),而sorted可以对所有可迭代对象进行排序。sort......
  • 文件路径中的斜杠和反斜杠有什么区别
    Unix使用斜杆/作为路径分隔符,而web应用最新使用在Unix系统上面,所以目前所有的网络地址都采用斜杆/作为分隔符。Windows由于使用斜杆/作为DOS命令提示符的参数标志了,......
  • 全局变量,局部变量,静态变量,外部变量的区别
    变量分类 作用域分类局部变量(默认是自动局部变量)1.定义:在一个函数内部定义的变量(包括函数形参)2.有效范围:一直在本函数有效3.变量存储:栈内存,函数结束之后自动销毁4.......
  • MVN命令之clean,compile,build,install,package区别
    1、clean:执行该命令会删除项目路径下的target文件,但是不会删除本地的maven仓库已经生成的jar文件2、compile:编译命令,只编译选定的目标,不管之前是否已经编译过,会在你的项目......
  • 正则表达式()、[]、{}的区别
    参考链接:https://www.cnblogs.com/richiewlq/p/7307581.html正则表达式的()[]{}有着不同的意思。()是为了提取匹配字符串的,表达式中有几个()就有几个相应的匹配字符串......
  • Java五个最常用的集合类之间的区别和联系
    Map<String,?>只能是只读模式,不能增加,因为增加的时候不知道该写入什么类型的值;Map<String,Object>可以读和写,只要是所有Object类的子类都可以。  常用的集合类有一......
  • vmwarevsphere与vmwareworkstation的区别
    转载:https://www.likecs.com/show-800520.html都是虚拟化的东西,这两者到底有什么本质的不同呢?    VMware Workstation是基于OS的虚拟OS资源的虚拟化工具,它能将OS......
  • HTTP1.0/HTTP1.1/HTTP2.0区别
    转载链接:https://vue3js.cn/interview/http/1.0_1.1_2.0.html#%E4%B8%80%E3%80%81http1-0一、HTTP1.0HTTP协议的第二个版本,第一个在通讯中指定版本号的HTTP协议版......