58

图解字符编码

 5 years ago
source link: https://i6448038.github.io/2019/04/24/character/?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

计算机只认识0和1

JBzM3mR.png!web

那字符串“abc”咋显示呢?

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

QBZjyaz.png!web

这种字典,就是字符集

FfEzYfV.png!web

现有的字符集

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

  • 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只是一个符号集,它只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储。

QJfaa2y.png!web

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

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

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

字符集之间的关系

IBRZzyv.png!web

参考文献:

更多精彩内容,请关注我的微信公众号 互联网技术窝 或者加微信共同探讨交流:

z6V3iiJ.jpg!web


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK