MySQL中基于 UTF-8 字符集编码,VARCHAR 字符长度与字节长度的理解

  • UTF-8 字符集
    • utf8mb4 字符集
  • 参考

UTF-8 字符集

在 mysql 4.1 及之前早期版本中,如果是字符集为UTF-8 , varchar 以字节为单位存储,一个汉字占 3 个字节,则 varchar(100) 类型字段只能存放约 33 个汉字

而在往后的版本中,如 5.x ,一个汉字占多少长度与编码有关 。
在 UTF-8 字符集下,varchar 以字符为单位存储。所以 varchar(100) 类型字段可存放约 100 个汉字。

但是这并不是说 varchar(100) 就等于 100 个字节,例如一个中文占三个字节,而实际字节长度可以用 length 函数检验。

举个栗子:

某表姓名字段 name varchar(60) ,name 的值为 “万科”,用 length(name) 输出实际长度为 6。这说明一个中文汉字(一个字符)占 3 个字节长度。

utf8mb4 字符集

另外 mysql 的 UTF-8 编码并不是真正的 UTF-8 编码,mysql 的 UTF-8 最多只支持 3 个字节,而 emoji 表情、一些特殊的中文字符则需要 4 个字节才能存储,因此在 MySQL 5.6+ 版本之后支持 4Bytes 字节(utf8mb4)的存储, utf8mb4 是对原先 UTF-8 只能存储 3 个字节大小的字符的一种补充,是一种真正的UTF-8编码。

参考

  • https://blog.csdn.net/Gerry_DC/article/details/108484009
  • https://blog.csdn.net/weixin_35600369/article/details/113164223

MySQL字符集编码中,VARCHAR 字符长度与字节长度的理解相关推荐

  1. mysql字符集编码和排序规则

    环境: mysql 5.7 26 DBeaver 21.1.2.202107041908 参考:<MySQL字符集与排序规则总结> 建议先阅读:<细说ASCII.GB2312/GBK ...

  2. linux修改mysql字符集6,linux下mysql字符集编码问题的修改

    安装完的MySQL的默认字符集为 latin1 ,为了要将其字符集改为用户所需要的(比如utf8),就必须改其相关的配置文件:由于linux下MySQL的默认安装目录分布在不同的文件下:不像windo ...

  3. 常见编码介绍。一个字符在不同编码中分别占几个字节(新手向)

    目录 什么是ASCII码? 1.介绍: 2.代码演示: 什么是Unicode码? 1.介绍: 2.注意事项的代码演示: 什么是utf-8? 一个字符在不同编码中分别占几个字节? 什么是ASCII码? ...

  4. 操作XML 报错:根级别上的数据无效 和 给定编码中的字符无效 解决办法

    根级别上的数据无效,解决如下: private void button1_Click(object sender, EventArgs e) { try { XmlDocument doc = new ...

  5. c#给定编码中的字符无效_C#程序检查给定的字符串是否等于(==)运算符

    c#给定编码中的字符无效 Input two strings and check whether they are equal or not using C# program. 输入两个字符串,并使用 ...

  6. matlab imread 出错 错误使用 fopen 文件名包含未包括在文件系统编码中的字符。 某些操作可能无法按预......

    提示错误一 错误使用 imread>parse_inputs (line 450) 文件名或 URL 参数必须为字符向量. 出错 imread (line 322) [filename, fmt ...

  7. mysql设置varchar_MySql中varchar长度的设置问题

    根据自己多年的工作经验,特别是在接收旧的项目时,varcahr的长度设置有不同的风格,针对varchar长度的设置问题,自己划分了不同的门派. 1.强迫症派:长度设置为4或者8的倍数,达到内存对齐的目 ...

  8. 数据库中varchar类型长度是指字符长度还是字节长度?两种定义方法

    Oracle中varchar2类型的字段长度单位默认是按照byte来定义, 比如常见写法varchar2(10)  代表只接收最大10字节长度 这种定义情况下10字节只能插入3个汉字,(数字字母只占一 ...

  9. mysql utf-8不支持生僻字_关于 MySQL UTF8 编码下生僻字符插入失败/假死问题的分析...

    1.问题:mysql 遇到某些中文插入异常 最近有同学反馈了这样一个问题: 上述语句在脚本中 load 入库的时候会 hang 住,web 前端.命令行操作则要么抛出 Incorrect string ...

最新文章

  1. 施一公:年轻人不要花时间去拉关系,尽全力做研究,以实力取胜!
  2. 计算机视觉系统中图像究竟经历了哪些“折磨”
  3. 我的常用在线工具网站
  4. python实现卡方(Chi-Squared Test)相关性检验
  5. Python深入04 闭包
  6. UA MATH565C 随机微分方程V 算子半群理论简介
  7. 跨浏览器Ajax调用封装
  8. uboot移植(七)——移植三星官方uboot(一)
  9. leetcode 贪心_leetcode题解(贪心算法)
  10. 剑指offer||3 前n个数二进制数中1的个数
  11. 读《图解TCPIP》
  12. ajax php投票记录功能,PHP 实例 AJAX 投票 | 菜鸟教程
  13. 回溯算法求解桥本分数式
  14. 从思维走向实践,数字化转型 IT 经营的成功路径
  15. JAVA游戏土行孙_《封神榜》土行孙,被誉为国内最知名矮星,现惨淡靠低保度日...
  16. CSS | 水平垂直居中都有哪几种方式
  17. 网络流——最大流和最小割
  18. C++:求整数num中包含因子k的个数
  19. 第1章 Linux系统的发展 (一)
  20. 李白的藏头诗鸿蒙圣安卓,记李将军回来藏头诗生成器下载(李白藏头诗在线生成器)V1.4 安卓简化版...

热门文章

  1. Aurelia binding
  2. java 字符串全半角转换工具
  3. 一、R语言Task View--Spatial 空间数据分析
  4. 高等数学18讲(19版)7.10
  5. 5G中DMRS的设计特点
  6. Anaconda清华镜像
  7. 广州虚拟动力携数字人交互技术产品参展第十九届深圳文博会
  8. 30岁跳槽,如何做到不迷茫?
  9. 达人评测 i5 11300h和r5 5600h的区别
  10. Python之路--Python基础1--数据类型