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