文章目录

  • @[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字符编码,原因如下

  1. 因为你保不准之后写入数据是否有emoji符号(常用场景如 用户昵称),用户昵称中带有符号很正常,但是你这边一插入,数据库就报错,无法控制。
  2. utf8mb4是对utf8的一种扩展,就是为了修复utf8最多只支持三个字节的字符这个问题。utf8mb4是真正的支持四个字节的字符。
  3. 越来越多的公司或用户都在使用utf8mb4,如果现在还用utf8后期想扩展成utf8mb4就需要重新构建数据库,庞大的数据量和工作量,会给后期添加天大的障碍。

什么是编码?什么是 UTF-8?

我们都知道,计算机使用 0 和 1 来存储文本。比如字符“C”被存成“01000011”,那么计算机在显示这个字符时需要经过两个步骤:

  1. 计算机读取“01000011”,得到数字 67,因为 67 被编码成“01000011”。
  2. 计算机在 Unicode 字符集中查找 67,找到了“C”。

同样的:

  1. 我的电脑将“C”映射成 Unicode 字符集中的 67。
  2. 我的电脑将 67 编码成“01000011”,并发送给 Web 服务器。

几乎所有的网络应用都使用了 Unicode 字符集,因为没有理由使用其他字符集。

Unicode 字符集包含了上百万个字符。最简单的编码是 UTF-32,每个字符使用 32 位。这样做最简单,因为一直以来,计算机将 32 位视为数字,而计算机最在行的就是处理数字。但问题是,这样太浪费空间了。

UTF-8 可以节省空间,在 UTF-8 中,字符“C”只需要 8 位,一些不常用的字符,比如“

mysql字符集 utf8 和utf8mb4 的区别相关推荐

  1. MySQL中 utf8 和 utf8mb4 的区别,以及 general_ci 、unicode_ci和unicode_520_ci的区别

    首先了解什么是Unicode: Unicode是一种信息技术(IT)标准,用于对世界上大多数书写系统中表示的文本进行一致的编码,表示和处理. 大致意思就是Unicode对英文字符.符号.汉字.表情符号 ...

  2. 全面了解mysql中utf8和utf8mb4的区别

    一.简介 MySQL在5.5.3之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode.好在utf8mb4是utf8的超集,除了将编码改为ut ...

  3. 浅谈MySQL中utf8和utf8mb4的区别

    一.什么是UTF8MB4? 我们在使用PhpMyAdmin管理面板时,可以在首页看到名为"Server connection collation"(服务器连接排序规则)的选项,用来 ...

  4. mysql中utf8和utf8mb4区别,MySQL中utf8和utf8mb4的区别

    一 .UTF8是什么 utf8"只是"utf8mb3"的一个别名,可以支持1-3字节表示的unicode字符. 而MySQL在5.5.3版本之后增加了一个utf8mb4的 ...

  5. SpringCloud工作笔记071---mysql字符集 utf8 和utf8mb4 的区别_utf8是不能存储emoji表情字符集的

    JAVA技术交流QQ群:170933152 可以简单的理解 utf8mb4 是目前最大的一个字符编码,支持任意文字. 为什么会有UTF8MB4? 既然utf8应付日常使用完全没有问题,那为什么还要使用 ...

  6. Mysql utf8 和utf8mb4 的区别

    相关内容: 记一次Mysql查询字段为空串在java中使用equals不相等的问题 Mysql 批量更改数据表和字段的字符集(Mysql UTF-8字符集更改为utf8mb4字符集) 前言 我们新建m ...

  7. MySQL的utf8与utf8mb4编码,以及utf8_bin、utf8_general_ci编码区别

    utf8和utf8mb4的区别 一.简介 MySQL在5.5.3之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode.utf8mb4是utf ...

  8. mysql修改字符集utf8为utf8mb4

    mysql修改字符集utf8为utf8mb4 查看数据库的编码格式 1 2 3 SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR ...

  9. utf8和utf8mb4的区别详解

    utf8和utf8mb4的区别 一.简介 MySQL在5.5.3之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode.utf8mb4是utf ...

最新文章

  1. pandas将dataframe的索引转化为列表list数据(convert dataframe index into a list)
  2. linux joe复制一行,Linux joe命令
  3. JSP 和 Servlet 区别
  4. 柳青:2017,滴滴实现规模增长和修炼内功的一年
  5. 2015workshop-age 的txt 生成过程
  6. 从头来之【iOS及历史版本特性介绍】
  7. html area标签用例,CSS中的html – tabindex
  8. leetcode之逆波兰表达式
  9. VMware克隆CentOS6.4后 eth0无法初始化
  10. c语言键盘函数空格,C语言中关于scanf函数的用法
  11. Could not mount the media/drive ‘D:\......./VBoxGuestAdditions.iso‘ (VERR_PDM_MEDIA_LOCKED)
  12. 财务软件服务器装什么系统,财务软件用哪种云服务器
  13. 台式计算机锁屏快捷键,台式机锁屏快捷键是什么
  14. 蜂窝移动电话定位技术与应用(转)
  15. 2020年机修钳工(初级)报名考试及机修钳工(初级)模拟试题
  16. 看京东如何把Intel RealSense技术用在物流上
  17. STM32F407配置pca9685驱动
  18. Java绘画板源码_Java 绘图板 示例源码下载(画板)
  19. x64dbg 基本使用技巧
  20. mac安装adb报错Unknown command: cask

热门文章

  1. kubernetes使用traefik作为ingress(相同域名不同路径访问不同服务)Middleware的StripPrefix进行实现
  2. 释放内存资源,我用empty.exe命令
  3. 服务器虚拟内存设置一下,服务器虚拟内存设置一下
  4. html clear的作用,css中clear的作用是什么?
  5. 多触点电器自动测试系统
  6. 苹果手机怎么用php,iphone怎么使用NFC功能?苹果手机nfc功能使用教程
  7. 大传媒时代报业如何驾驭新媒体
  8. 非常方便的d3d截屏~!
  9. 各种计算机认证考试的比较~
  10. 华为手机可以分屏吗_你知道华为手机怎么投屏到电视上去吗?原来华为手机这么厉害...