各种字符集编码傻傻分不清楚?

引言

因为最近一道算法题说考虑Unicode的情况,才发现平时只是知道这几种编码方式和字符集的名字,并不知道其中的区别和联系

常见的字符集编码有ASCII字符集、ISO-8859字符集、GB2312字符集、BIG5字符集、GB18030字符集、Unicode字符集

这里是我自己搜索和总结的理解,希望可以对和我一样迷惑的你提供一个参考,文章阅读大概需要五分钟,希望不会浪费你宝贵的时间

正文

ASCII
  ASCII 码一共规定了128个字符的编码,包括所有的英文字母和常用的符号,是最早的字符集

ISO-8859-1
  ISO-8859-1编码是单字节编码,向下兼容ASCII,包括西欧语言、希腊语、泰语、阿拉伯语、希伯来语对应的文字符号,作为ASCII的拓展版本

GBK/GB2312/GB18030
  世界上众多的国家单单靠ASCII字符集是满足不了的,为了存储中文GBK字符集出现了,为了针对繁体字和各种少数民族文字,这几种字符集就出现了

BIG5
  Big5收录的汉字只包括繁体汉字,不包括简体汉字,一些生僻的汉字也没有收录,也就是说Big5收录的字符是GBK收录字符的一部分,但相同字符的编码不同

Unicode
  当每个国家都有自己的字符集的时候,统一标准就必须要必须出现了,于是ISO发布了Unicode字符集,包含了世界上所有的字符
  Unicode是一个字符集,他也很多编码标准如TUF-8、UTF-16和UTF-32等针对不同的存储方法而存在
    UFT-8:一种变长的编码方案,使用 1~6 个字节来存储;
    UFT-32:一种固定长度的编码方案,不管字符编号大小,始终使用 4 个字节来存储;
    UTF-16:介于 UTF-8 和 UTF-32 之间,使用 2 个或者 4 个字节来存储,长度既固定又可变。

Unicode存在的问题
  我们刚刚知道Unicode是一个字符集,但是如何才能区别 Unicode 和 ASCII ?计算机怎么知道三个字节表示一个符号,而不是分别表示三个符号呢?
  所以他才推出了众多的编码方式通过规定长度来判别他代表的含义
  第二个问题是,英文字母只用一个字节表示就够了,但是对于UTF-32这种每个字符四个字节的编码方式的对于存储来说是极大的浪费
posted @ 2021-03-27 11:20  21岁还不是架构师  阅读(578)  评论(0编辑  收藏  举报