编码:就是用二进制数来表示计算机中的控制符、大小写字母、数字、中文汉字等
历程
1、ascii 码
ascii 就是用一个字节去表示计算机中的控制符、大小写字母、数字以及符号和其他的图案。
一个字节是8位,也就是有 256 个数 ,所以可以用来表示 256 个东西。
0 - 32 来表示各种控制,叫做控制码(如:10代表换行,7表示声音)。
32 - 126 则代表大小写字母、符号等
还有 128 个数,则是用于扩展一些图案等。
2、iso-8859-1 编码
在欧洲的国家和其他国家也有自己的语言。(如:阿拉伯数字、希腊语)
这里也需要能够在计算机用某个二进制数来表示。
这时候,他们利用了 ascii 码剩下的 128 个数。
也就是它也是一个字节,只是在 ascii 码上面进行了扩展。
3、GBK 编码
ascii 可以用来表示字母和符号,但是中文是无法表示的。
所以国人就规定一套自己的规定:
当一个自己表示的数字小于 127 的时候,任然用 ascii 来表示。
当某个字节大于 127 且紧接着的后面的一个字节也必须大于 127,这时候就会用这两个字节来表示一个汉字。
第一字节就称为高自己,第二个则称为低字节。
以上就是 gb2312 的编码规则。
但是汉字会有很多,这个时候就进行了重新规定:
只要某一个字节大于 127 ,则就会与后面的字节来一起代表汉字,所以低字节就不需要大约 127 ,则样就可以表示更多的汉字。
以上是标准的 gbk 的编码规则。
3、unicode 编码
规定了所有的字符(文字、符号、字母等)都用 2/4 个字节的二进制来表示。
也就是都用两个字节来表示。这样可以用呢但字节表示的字符,就会浪费资源。
utf-16 是 unicode 的具体实现,两个字节。
utf-32 也是 unicode 的具体实现,四个字节。
4、utf-8
utf-8 也是 unicode 编码的实现。
utf-8 可变长度的编码方式,可以用 1 - 4 个自己来表示字符。
单字节:自己的第一位为 0 ,后面 7 位表示字符,和 ascii 一样表示
n字节:第一个字节的前 n 位都为 1 ,n+1 位未 0,其他字节的话开始都是 10 开始。