什么是字符编码
字符集
简单的说字符集就是一张表,一张存储了文字和二进制对应的表。
我们知道计算机存储信息都是以二进制来存储的,那么二进制又是用来表示我们所熟知的文字或者符号呢?这就需要一个表来标注好对应关系。在以前我们拥有很多的字符集,因为每个国家的字符都不太一样,都是各自为营制作字符集。后来有组织为了统一各个国家的字符,制作了Unicode
字符集,Unicode1.0版本在1991年10月发布。
我们来看一下GB2312简体中文编码表
这里列出一部分表:
code | +0 | +1 | +2 | +3 | +4 | +5 | +6 | +7 | +8 | +9 | +A | +B | +C | +D | +E | +F |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
A1A0 | 、 | 。 | · | ˉ | ˇ | ¨ | 〃 | 々 | — | ~ | ‖ | … | ‘ | ’ | ||
A1B0 | “ | ” | 〔 | 〕 | 〈 | 〉 | 《 | 》 | 「 | 」 | 『 | 』 | 〖 | 〗 | 【 | 】 |
A1C0 | ± | × | ÷ | ∶ | ∧ | ∨ | ∑ | ∏ | ∪ | ∩ | ∈ | ∷ | √ | ⊥ | ∥ | ∠ |
其中、
这个对应的编码是A1A2
上面给出的是中国的GB2312编码,但只适用于中文汉字。世界上有许多的语言,为了统一标准就有人做一个字符集来包含几乎所有的语言。这就是Unicode
字符编码
编码和字符集的不同在于,编码其实是一种算法。
那既然我们已经有了字符集了,为什么我们还需要字符编码呢?
理论上我们其实只需要在计算机中存储Unicode
这个字符集就够了。但实际情况是怎么样的呢?
举个例子,我们存储a
这个字母。Unicode字符集和UTF-8存储对比
Unicode | 00000000 00000000 00000000 0110001 |
---|---|
UTF-8 | 01100001 |
我们发现UTF-8占的空间要少的多。
实际情况是因为那个时候的计算机存储不像现在有这么大,为了考虑到存储空间的限制,我们需要一个算法来减少字符集的存储空间。现在我们一直使用的UTF-8
就是字符编码。
字符集和字符编码的关系
像我们上文所说的 Unicode
和 UTF-8
,Unicode
是几乎涵盖了各个国家的文字和字符,UTF-8
则是目前用的最广的字符编码。UTF-8是为了减少Unicode的存储空间而设计的一种算法。
参考
字符编码
十分钟搞清字符集和字符编码
字符集和字符编码
字符集历史和乱码问题(一)
字符集历史和乱码问题(二)
本博客著作权归从这到那所有,转载请注明出处