首页 > 其他分享 >utf8和utf8mb4有什么区别?

utf8和utf8mb4有什么区别?

时间:2023-04-12 10:07:36浏览次数:42  
标签:编码 字节 区别 utf8 占用 utf8mb4 字符 存储空间

一、简介

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

utf8和utf8mb4有什么区别?_utf8mb4

二、内容描述

通常,计算机在存储字符时,会根据不同类型的字符以及编码方式分配存储空间。

例如以下几种编码方式;

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

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

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

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

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

既然utf8能兼容绝大部分的字符,为什么要扩展utf8mb4?

随着互联网的发展,产生了许多新类型的字符,也就是我们通常在聊天时发的小黄脸表情(四个字节存储),所以,设计数据库时如果想要允许用户使用特殊符号,最好使用utf8mb4编码来存储,使得数据库有更好的兼容性,但是这样设计会导致耗费更多的存储空间。

安装使用CRMEB开源商城的时候建议创建utf8mb4编码的数据库,源码是免费的有需要的可以下载

标签:编码,字节,区别,utf8,占用,utf8mb4,字符,存储空间
From: https://blog.51cto.com/u_15723831/6185079

相关文章

  • C++-unique_lock与lock_guard区别
    C++-unique_lock与lock_guard区别https://blog.csdn.net/ccw_922/article/details/124662275https://blog.csdn.net/sinat_35945236/article/details/124505414都可以对std::mutex进行封装,实现RAII的效果。绝大多数情况下这两种锁是可以互相替代的,区别是unique_lock比lock_gu......
  • Ado.net与EF的区别?
    运行效率方面:Ado.net更好,直接通过Command、Connection等命令写sql语句进行CRUD操作。开发效率方面:EF开发起来更快,代码可读性好。只需操作对象,使用C#语法完成数据库操作。适用性方面:EF适合大型项目,数据量大。Ado.net适合小型项目,运行效率高。......
  • 数组和链表的区别
    1.读取数组读取耗时为O(1),支持随机读取;链表读取耗时为O(n),仅支持顺序读取; 2.插入(已知目标节点)数组插入耗时为O(n);链表插入耗时为O(1); 3.删除(同插入)数组插入耗时为O(n);链表插入耗时为O(1);  ......
  • HTML5 Canvas和SVG的区别
    Canvas主要是用笔刷来绘制2D图形的。SVG主要是用标签来绘制不规则矢量图的。相同点:都是主要用来画2D图形的。区别:SVG画的是矢量图,Canvas画的是位图;SVG节点过多时渲染慢,Canvas性能更好一点,但写起来更复杂;SVG支持分层和事件,Canvas不支持,但是可以用库实现。......
  • JavaScript 的 ==、===、区别
    在JavaScript中,==和===都是用于比较两个值是否相等的运算符。它们之间的主要区别在于类型转换方面。具体来说:== 运算符在检查相等性之前会根据需要进行类型转换,将不同类型的值转换为相同类型。例如,如果一个操作数是字符串类型,另一个是数字类型,那么字符串会被转换成数字后......
  • 数据挖掘中聚类和分类有什么区别
         分类(classification)是这样的过程:它找出描述并区分数据类或概念的模型(或函数),以便能够使用模型预测类标记未知的对象类。分类分析在数据挖掘中是一项比较重要的任务,目前在商业上应用最多。分类的目的是学会一个分类函数或分类模型(也常常称作分类器),该模型能把......
  • 聚类与分类区别2
       在分类中,对于目标数据库中存在哪些类是知道的,要做的就是将每一条记录分别属于哪一类标记出来。聚类需要解决的问题是将已给定的若干无标记的模式聚集起来使之成为有意义的聚类,聚类是在预先不知道目标数据库到底有多少类的情况下,希望将所有的记录组成不同的类或者说聚类,并且......
  • 词根pro和pre有什么区别
    1.pro- 2个人去某个地方,一个人在一个人前面的语境用pro前缀pro-来自拉丁介副词pro意为“向前(forward,forth)或出(out)”,还有“赞成(infavourof),代替(inplaceof)"等含义。2.pre- 一件事发生了,在之前发生用pre,在之后发生用psot它来源拉丁介副词prae原意为before,be......
  • @RequestParam和@PathVariable的用法与区别
    **@PathVariable**格式@RequestMapping(value="/user/{username}")publicStringuserProfile(@PathVariable(value="username")Stringusername){ return"user"+username;}在上面的例子中,当@Controller处理HTTP请求时,userProfile的参数......
  • QEMU和KVM之间的联系和区别
    QEMU和KVM是两个不同的虚拟化技术,但它们经常一起使用。QEMU是一个开源的虚拟化工具,可以模拟多种不同的硬件平台,并在这些平台上运行虚拟机。它可以在多个操作系统上运行,包括Linux、Windows和MacOS等。QEMU提供了完整的虚拟化功能,包括CPU、内存、磁盘、网络和输入输出等。KVM(Kerne......