utf8和utf8mb4的区别详解-php教程

资源魔 36 0

utf8以及utf8mb4的区分

1、简介

MySQL正在5.5.3之后添加了这个utf8mb4的编码,mb4就是most bytes 4的意义,专门用来兼容四字节的unicode。utf8mb4是utf8的超集,除了了将编码改成utf8mb4外没有需求做其余转换。当然,为了节流空间,普通状况下应用utf8也就够了。

2、内容形容

那下面说了既然utf8可以存下年夜局部中文汉字,那为何还要应用utf8mb4呢? 原来mysql支持的 utf8 编码最年夜字符长度为 3 字节,假如遇到 4 字节的宽字符就会拔出异样了。三个字节的 UTF-8 最年夜能编码的 Unicode 字符是 0xffff,也就是 Unicode 中的根本多文种立体(BMP)。也就是说,任何没有正在根本多文本立体的 Unicode字符,都无奈应用 Mysql 的 utf8 字符集存储。包罗 Emoji 表情(Emoji 是一种非凡的 Unicode 编码,常见于 ios 以及 android 手机上),以及不少没有罕用的汉字,和任何新增的 Unicode 字符等等(utf8的缺陷)。

通常,较量争论机正在存储字符时,会依据没有同类型的字符和编码形式调配存储空间。例如如下几种编码形式;

①ASCII编码中,一个英文字母(没有分巨细写)占用一个字节的空间,一个中文汉字占用两个字节的空间。一个二进制的数字序列,正在较量争论机中作为一个数字单位存储时,普通为8位二进制数,换算为十进制。最小值0,最年夜值255。

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

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

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

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

既然utf8能兼容绝年夜局部的字符,为何要扩大utf8mb4?

跟着互联网的倒退,孕育发生了许多新类型的字符,例如emoji这类类型的符号,也就是咱们通常正在谈天时发的小黄脸表情,这类字符的呈现没有正在根本多立体的Unicode字符之中,招致无奈正在MySQL中应用utf8存储,MySQL于是对utf8字符进行了扩大,添加了utf8mb4这个编码。

以是,设计数据库时假如想要容许用户应用非凡符号,最佳应用utf8mb4编码来存储,使患上数据库有更好的兼容性,然而这样设计会招致消耗更多的存储空间。

保举教程:《php从入门到通晓》

以上就是utf8以及utf8mb4的区分详解的具体内容,更多请存眷资源魔其它相干文章!

标签: php开发教程 php开发资料 php开发自学 utf8 utf8mb4

抱歉,评论功能暂时关闭!