标签:就是 应该 组合 orm byte www. 字母 占用 数字
在计算机内部,所有信息最终都是一个二进制值。每一个二进制位(bit)有 0
和 1
两种状态,因此八个二进制位就可以组合出 256 种状态,这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示 256 种不同的状态,每一个状态对应一个符号,就是 256 个符号,从 00000000
到 11111111
。
上世纪 60 年代,美国制定了一套字符编码。对英语字符与二进制位之间的关系做了统一规定,这套方案被称作 ASCII 码(American Standard Code for Information Interchange 美国标准信息交换码),一直沿用至今。
ASCII 码一共规定了 128 个字符的编码,如常见的有:
00100000
)是空格00110000
)是数字 0
01000001
)是字母 A
?01100001?
)是字母 a
这 128 个字符(包括 32 个不能打印出来的控制符号),只占用了一个字节的后面 7 位,最前面的一位统一规定为 0
。
英语用 128 个字符就够了。但是用来表示其他语言,128 个字符是不够的,后来欧洲国家在 ASCII 基础上,利用字节中闲置的最高位编入新的符号,这样一来,这些欧洲国家使用的编码体系可以最多表示 256 个字符。
由于不同国家有不同的字母,因此,即使它们都使用 256 个符号的编码方式,代表的字母却不一样。但是在所有的编码方式中,0-127 表示的符号是相同的,不一样的是128-256这一段。
正因为如此,世界上存在很多种编码方式,同一个二进制数字可以被解释成不同的符号。因此,要想打开一个文本文件,就必须直到它的编码方式,否则将会出现乱码。
如果有一种编码,将世界上所有的符号都纳入其中,每一个符号都给予一个独一无二的编码,那么乱码问题就会消失。这就是 Unicode(也叫万国码),就像它的名字都表示的,这是一种所有符号的编码。
然而,Unicode 有很严重的问题。由于Unicode只是一个字符集集,它只规定了符号的二进制代码,却没有规定这个二进制代码应该怎么存储。后来,出现了 Unicode 的多种存储方式,也就是说有许多种不同的二进制格式可以用来表示 Unicode 编码,导致 Unicode 编码没有流行起来,直到互联网的出现。
互联网的普及,强烈要求出现一种统一的编码方式,UTF-8 (8-bit Unicode Transformation Format)就是一种互联网上最流行的一种 Unicode 的实现方式。
UTF-8 最大的一个特点,就是它是一种变长的编码方式。它可以使用 1~4 个字节来表示一个符号,根据不同的符号而变化字节长度。
UTF-8 的编码规则很简单,只有两条:
0
,后面 7 位为这个符号的 Unicode 码。因此对于英语字符,UTF-8 编码和 ASCII 码是相同的。1
,第 n+1 位设为 0
,后面字节的前两位一律设为 10
。剩下的没有提及的二进制位,全部为这个符号的 Unicode 码。注:在 UTF-8 编码规则中,汉字通常占三个字节,扩展 B 区以后的汉字占四个字节。
参见:http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html
标签:就是 应该 组合 orm byte www. 字母 占用 数字
原文地址:http://www.cnblogs.com/dingxr-code/p/8016971.html