varchar汉字占几个字符_图解字符编码

啥叫字符集

计算机只认识0和1

ab05a524623630f8717c1f839f1026b1.png

那字符串“abc”咋显示呢? 有个类似于字典的东西,告诉计算机在此种情况(在此编码格式)下,某些数字该显示什么。

ddc294d752a7beef2e32627fccc8487c.png

这种字典,就是字符集

431d4231f6796311d77072e1ba75f10f.png

现有的字符集

目前主要有以下几种字符集:

  • ASCII字符集
  • ISO 8859-1字符集
  • GB2312字符集
  • GBK字符集
  • Unicode编码

ASCII字符集

共收录128个字符,都是些最最基础的字符。详情请看百度百科

大小:占一个字节

ISO 8859-1字符集(别名latin1)

ASCII字符集的扩充。共收录256个字符。ASCII字符集基础上扩充了128个西欧常用字符(包括德法两国的字母)

大小:占一个字节

GB2312字符集

划重点:made in china。 百度百科~曰:”共收录6763个汉字,其中一级汉字3755个,二级汉字3008个;同时,GB 2312收录了包括拉丁字母、希腊字母、日文平假名及片假名字母、俄语西里尔字母在内的682个全角字符。“详情请看百度百科

兼容ASCII字符集。

大小:如果该字符在ASCII字符集中,则采用1字节编码。否则采用2字节编码。

GBK字符集

划重点:made in china。 继GB2312字符集之后中国又出的一套标准。这套更牛逼:不仅完全兼容GB2312字符集。还扩充了很多: ”共23940个码位,共收录了21003个汉字...全部中日韩汉字...“ 总之一个字:牛逼!

大小:如果该字符在ASCII字符集中,则采用1字节编码。否则采用2字节编码。

Unicode编码。

牛逼的玩意儿来了。先看看它的中文译名:统一码、万国码、单一码。 收录地球上的所有字符,现在还在不断扩充。 但是,需要注意的是,Unicode只是一个符号集,它只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储。

4d2287b0417aec6852b59cb7040e1b91.png

其中,Unicode编码规定的符号代码必须以”U+”做前缀。

编号怎么对应到二进制表示呢?有多种方案:主要有 UTF-8,UTF-16,UTF-32。

  • UTF-32字符集。将unicode编码的码号直接转成对应的二进制数。大小:4个字节
  • UTF-16字符集。使用变长字节表示。大小:对于编号在 U+0000 到 U+FFFF 的字符(常用字符集),直接用两个字节表示,其余的用4个字节
  • UTF-8字符集。使用变长字节表示。兼容ASCII字符集。大小:1~4个字节

字符集之间的关系

以上内容都是废话,下图一定要保存好藏好

2ca09818bc56d8f9e9725631445debdc.png

参考文献:

  • 掘金小册《MySQL 是怎样运行的:从根儿上理解 MySQL》
  • https://blog.csdn.net/zhusongziye/article/details/84261211
  • https://www.cnblogs.com/kingstarspe/p/ASCII.html

更多精彩内容,请关注我的微信公众号 互联网技术窝

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值