理解: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。