DanceSmile / dancesmile.github.io

dancesemile's github pages
4 stars 1 forks source link

字符集和字符编码 #4

Open DanceSmile opened 6 years ago

DanceSmile commented 6 years ago

字符集

既然是“集”,也就是“集合”,“字符集”自然就是“一定量字符的集合”。 一个字符集包含了固定数量的字符,如ASCII字符集包含A-Z、a-z、0-9、半角标点符号和特殊控制符号(如换行符)在内的128个字符。

字符编码

编码,意思是指将数据通过一定方式表达或储存,这个方式就叫编码。所以字符编码就是字符的表现、储存方式,也就是字符集的实现方式。 但需要注意的是:有的字符编码和字符集的名称是一致的。

字符串是一种特殊的数据类型,因为它存在编码问题。

因为计算机只能处理二进制数据,我们在电脑上看到的英文、汉字等字符都是通过二进制转换过来的结果,这种将字符转化成二进制的规则就是编码,反之则是解码。

最早的计算机使用8个比特位(bit)来表示是一个字节,每个bit(二进制位)只有0和1两种表示方式,所以00000000 - 11111111 转换成10进制就是0-255,所以一个字节最多能够映射256个字符。

最早的编码表是美国人发明的,他们将26个大小写英文字母和数字和一些常用的符号等128个字符写进计算机,这个编码表被成为 ASCII编码

ASCII 码一共规定了128个字符的编码

ASCII编码 存储的字符很少,满足不了其他国家语言的需求,比如中国的汉字就有10万个,就造成了每个国家都将自己的语言编码进编码表里面(为了避免和ASCII编码冲突默认都是从128开始)。

问题:ASCII编码 的字符太少,满足不了语言的需求

中国制定了 gbk编码,日本制定了 Shift_JIS编码 ,韩国把韩文编到 Euc-kr编码 里.......。几乎每个国家都有自己的编码规则,就出现了一个问题,一个网页要显示多语言,就会造成编码冲突的问题。结果就会造成网页乱码。

问题: 世界上存在着多种编码方式,同一个二进制数字可以被解释成不同的符号。

所以 unicode编码 诞生了,为了解决不同国家编码映射冲突的问题。unicode编码 把所有国家的语言一起按顺序编写进 unicode编码 表里面。这样就统一了各国之间的编码规则。(现在的编程语言大多数都是使用的 unicode编码 )。

问题:unicode 之规定的字符的表现形式,并没有解决字符的存储方式。 unicode每种语言中的每个字符设定了统一并且唯一的二进制编码,是一个很大的集合,现在的规模可以容纳100多万个符号 ,以满足跨语言、跨平台进行文本转换、处理的要求。unicode编码一定以u开头。

由于 unicode编码 通常是两个字节,这样又导致了一个问题 - 资源浪费。如果字母A ASCII编码表里面是一个字节可以表示,unicode编码 通常是定长,所有表示A就需要在前导0。虽然 unicode编码 解决了字符编码统一的问题,但是如果文档里面大多数是以字母为主,则使用unicode编码 的存储空间将是 ASCII编码 的两倍。

为了解决 unicode编码 存储浪费的问题,UTF-8编码 诞生了。UTF-8编码unicode编码 按照不同的字符编码成1-6个字符,UTF-8编码 是变长字符。 UTF-8编码有一个额外的好处,就是 ASCII编码 实际上可以被看成是 UTF-8编码 编码的一部分.

字符在计算机的编码方式

在计算机内存中,统一使用决 unicode编码 ,当需要保存到硬盘或者需要传输的时候,就转换为 UTF-8编码

例如:用记事本编辑的时候,从文件读取的 UTF-8编码 字符被转换为 unicode编码 字符到内存里,编辑完成后,保存的时候再把 unicode编码 转换为 UTF-8编码 保存到文件。

编码字符集Unicode,有UTF-8、UTF-16、UTF-32等多种字符编码 编码字符集ASCII,本身就是编码字符集,又是字符编码 编码字符集CB2312,只有EUC-CN一种字符编码

名词释义:

字符:字符是一个信息单位,它是各种文字和符号的总称 字符集(Charset):字符集是字符的集合。 字符编码:字符编码,是指对于字符集中的字符,将其编码为特定的二进制数,以便计算机处理。

结语

字符集是字符的集合,字符编码是把字符集的实现方式。 例如:

`ASCII字符集`:就是带`编号`的字符的集合。
`ASCII编码`:其实这是`对ASCII字符集中的字符按照编号进行编码`的简略称呼。

参考文档

https://www.zybuluo.com/xiaohaizi/note/897775