mysql字符集 utf8 和utf8mb4 的区别
文章目录
- @[toc]
- 总结速览
- 什么是编码?什么是 UTF-8?
- mysql中的utf8与utf8mb4
- 为什么使用utf8mb4
- 总结
- 最后
用mysql创建数据库表时,一般都会选择用utf-8编码(防中文乱码,通用性)
对自己以前的小项目及平时学习,utf-8是足够了的,一直也没有遇到过什么问题,后面公司中的表都是用的utf-8mb4(强制要求),刚开始也不懂为什么,也没太当回事,后面无意看到一篇讲utf-8与utf-8mb4的区别后,才明白两个到底什么关联,什么区别。
建议以后不管自己用还是公司都都将数据库/表的字符集编码设置成utf8mb4。
学mysql时 utf8支持四个字节的话 好像早就忘了吧,感觉mysql这个开端不好(开头不重视,觉得简单,但是却一直没有做到学以致用)。
总结速览
总结一下,其实mysql中的utf8并不是真正的支持每个字符最大四个字节,而是三个字节,中文是占3个字节,其他数字、英文、符号占一个字节。自己日常使用影响不大,但是emoji符号占4个字节,一些较复杂的文字、繁体字也是4个字节。
但是在公司建表一定要使用utf8mb4字符编码,原因如下
- 因为你保不准之后写入数据是否有emoji符号(常用场景如 用户昵称),用户昵称中带有符号很正常,但是你这边一插入,数据库就报错,无法控制。
- utf8mb4是对utf8的一种扩展,就是为了修复utf8最多只支持三个字节的字符这个问题。utf8mb4是真正的支持四个字节的字符。
- 越来越多的公司或用户都在使用utf8mb4,如果现在还用utf8后期想扩展成utf8mb4就需要重新构建数据库,庞大的数据量和工作量,会给后期添加天大的障碍。
什么是编码?什么是 UTF-8?
我们都知道,计算机使用 0 和 1 来存储文本。比如字符“C”被存成“01000011”,那么计算机在显示这个字符时需要经过两个步骤:
- 计算机读取“01000011”,得到数字 67,因为 67 被编码成“01000011”。
- 计算机在 Unicode 字符集中查找 67,找到了“C”。
同样的:
- 我的电脑将“C”映射成 Unicode 字符集中的 67。
- 我的电脑将 67 编码成“01000011”,并发送给 Web 服务器。
几乎所有的网络应用都使用了 Unicode 字符集,因为没有理由使用其他字符集。
Unicode 字符集包含了上百万个字符。最简单的编码是 UTF-32,每个字符使用 32 位。这样做最简单,因为一直以来,计算机将 32 位视为数字,而计算机最在行的就是处理数字。但问题是,这样太浪费空间了。
UTF-8 可以节省空间,在 UTF-8 中,字符“C”只需要 8 位,一些不常用的字符,比如“
首先了解什么是Unicode: Unicode是一种信息技术(IT)标准,用于对世界上大多数书写系统中表示的文本进行一致的编码,表示和处理. 大致意思就是Unicode对英文字符.符号.汉字.表情符号 ... 一.简介 MySQL在5.5.3之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode.好在utf8mb4是utf8的超集,除了将编码改为ut ... 一.什么是UTF8MB4? 我们在使用PhpMyAdmin管理面板时,可以在首页看到名为"Server connection collation"(服务器连接排序规则)的选项,用来 ... 一 .UTF8是什么 utf8"只是"utf8mb3"的一个别名,可以支持1-3字节表示的unicode字符. 而MySQL在5.5.3版本之后增加了一个utf8mb4的 ... JAVA技术交流QQ群:170933152 可以简单的理解 utf8mb4 是目前最大的一个字符编码,支持任意文字. 为什么会有UTF8MB4? 既然utf8应付日常使用完全没有问题,那为什么还要使用 ... 相关内容: 记一次Mysql查询字段为空串在java中使用equals不相等的问题 Mysql 批量更改数据表和字段的字符集(Mysql UTF-8字符集更改为utf8mb4字符集) 前言 我们新建m ... utf8和utf8mb4的区别 一.简介 MySQL在5.5.3之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode.utf8mb4是utf ... mysql修改字符集utf8为utf8mb4 查看数据库的编码格式 1 2 3 SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR ... utf8和utf8mb4的区别 一.简介 MySQL在5.5.3之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode.utf8mb4是utf ...mysql字符集 utf8 和utf8mb4 的区别相关推荐
最新文章
热门文章