理解:ASCII码
- 在计算机外部,所有数据都应用二进制示意。每一个二进制位(bit)有0和1两种状态,因而8个二进制位就能够组合出256种状态,这被称为一个字节(byte)。一个字节一共能够用来示意256种不同的状态,每一个状态对应一个符号,就是256个符号,从0000000到11111111。
- ASCII码:上个世纪60年代,美国制订了一套字符编码,对英语字符与二进制位之间的关系,做了对立规定。这被称为ASCII码。ASCIIl码一共规定了128个字符的编码,比方空格“SPACE"是32(二进制00100000),大写的字母A是65(二进制01000001)。这128个符号(包含32个不能打印进去的管制符号),只占用了一个字节的前面7位,最后面的1位对立规定为0。
ASCII的毛病:
- 不能示意所有字符。
- 雷同的编码表示的字符不一样:比方,130在法语编码中代表了é,在希伯来语编码中却代表了字母Gimel (:)
理解: Unicode编码
- 乱码:世界上存在着多种编码方式,同一个二进制数字能够被解释成不同的符号。因而,要想关上一个文本文件,就必须晓得它的编码方式,否则用谬误的编码方式解读,就会呈现乱码。
- Unicode:一种编码,将世界上所有的符号都纳入其中。每一个符号都给予一个独无二的编码,应用Unicode没有乱码的问题。
- Unicode 的毛病:Unicode只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储:无奈区别Unicode 和ASCII:计算机无法辨别三个字节示意一个符号还是别离示意三个符号。另外,咱们晓得,英文字母只用一个字节示意就够了,如果unicode对立规定,每个符号用三个或四个字节示意,那么每个英文字母前都必然有二到三个字节是0,这对于存储空间来说是极大的节约。这时咱们就须要一个对Unicode编码的实现。
理解:UTF-8
- UTF-8是在互联网上应用最广的一种 Unicode 的实现形式。
- UTF-8是一种变长的编码方式。它能够应用1-6个字节示意一个符号,依据不同的符号而变动字节长度。
UTF-8的编码规定:
- 对于单字节的UTF-8编码,该字节的最高位为0,其余7位用来对字符进行编码(等同于ASCIl码)。
- 对于多字节的UTF-8编码,如果编码蕴含n个字节,那么第一个字节的前n位为1,第个字节的第n+1位为0,该字节的残余各位用来对字符进行编码。在第一个字节之后的所有的字节,都是最高两位为"10",其余6位用来对字符进行编码。
理解:GBK
GBK: 专门用来解决中文编码,双字节。
是在国家标准GB2312根底上扩容后兼容GB2312规范。
蕴含全副中文字符。
UTF-8: 解决国内上制度的一种多字节编码,对英文应用8位(1个字节),中文应用24位(3个字节)来编码。
对于英文字符较多的论坛实用于UTF-8节俭空间。
蕴含全世界所有国家须要用到的字符。
简言而知,GBK编码方式的编码是以中国国情而发明的,在国内上的兼容性不好,这也是为什么大多数的网页是应用UTF-8编码而不是GBK。