ASCII编码
ASCII (American Standard Code for Information Interchange):美国信息交换标准代码是基于的一套电脑编码系统,主要用于显示现代英语和其他语言。它是最通用的标准,并等同于国际标准 ISO/IEC 646。ASCII第一次以规范标准的类型发表是在1967年,最后一次更新则是在1986年,到目前为止共定义了128个字符。
通俗来说就是,美国人要让英语可以被计算机识别,就把英语中常用的字符(例如26个字母、数字、标点符号以及特殊字符等)拿出来编号,从0编号到127,这些编号称之为码点。然后将码点转成二进制,不够的前面八位的前面补零,补成一个字节。因此标准的ASCII码使用一个字节存储一个字符,首位是0,总共可以标识128个字符,对美国人来说完全够用。
GBK编码
但是,后来我国随着计算机的普及,只有128个字符的ASCII对于文化博大精深的中国来说,怎么可能够用!我国常用汉字字符几千个,ASCII码只有128个字符,都不够塞牙缝的。因此中国人就搞了一套自己的字符集GBK(国标)!
GBK包含了两万多个字符,一个中文字符编码成两个字节。于此同时GBK兼容ASCII字符集
注意:GBK规定,中文字符编码的二进制第一位必须是1,在识别的时候只要遇到二进制第一位是1,就连着都两个字节,如果是0就读一个字节。
Unicode编码
问题来了!如果每个国家都根据自己的语言编制出一套字符集,那完了,那么多的字符集在全世界范围流通,各种转换,就会出现各种乱码,嗯~~,估计得政哥重生来解决一下子了。这个时候某国际组织站出来了说,你们都用我这个,我这给你们兼容所有的语言,都给我用Unicode编码(因此也叫万国码)!!!
UTF-32
Unicode编码第一版是UTF-32,十分的简单粗暴,用四个字节(32位,几十亿个字符,绝对够用)来表示一个字符,解码的时候也四个四个解码,多简单!
但是!UTF-32太奢侈了,懂不懂计算机存储空间寸土寸金?因此没有被广泛使用。
UTF-8
Unicode编码第二版是UTF-8,这个就比较高明,它采用可变长的编码方案,共分为四个长度区域,1个字节、2个字节、3个字节、4个字节,简单来说就是按照字符大小来确定占用多少存储空间。例如英文数字等占用一个字节,汉字占用3个字节。
那么怎么识别呢?看下面图