ASCII码
计算机内部,所有信息都是由二进制的字符串表示
每一个二进制位有“0”、“1”两种状态,因此8个二进制位可以表示256个状态,每个状态代表一个符号就是256个符号,从0000000到11111111。
上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间的关系,做了统一规定。这被称为ASCII码,一直沿用至今。
ASCII码一共规定了128个字符的编码,比如空格"SPACE"是32(二进制00100000),大写的字母A是65(二进制01000001)。这128个符号(包括32个不能打印出来的控制符号),只占用了一个字节的后面7位,最前面的1位统一规定为0。
Unicode码
ASCII码通过1个字节的描述仅能表示256个字符,对于非英语国家的文字不能完全描述
Unicode是一个很大的集合,现在的规模可以容纳100多万个符号,可以描述中文、法文、阿拉伯文字
Unicode旨在建立一套能够描述所有字符的字符集,它使用2个字节来描述一个符号
Unicode是一个符号集,它只规定了符号的二进制码,未规定其如何存储。
UTF-8
互联网的普及,强烈要求出现一种统一的编码方式。UTF-8就是在互联网上使用最广的一种Unicode的实现方式。
UTF-8最大的一个特点,就是它是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。
UTF-8的编码规则很简单,只有二条:
1)对于单字节的符号,字节的第一位设为0,后面7位为这个符号的unicode码。因此对于英语字母,UTF-8编码和ASCII码是相同的。
2)对于n字节的符号(n>1),第一个字节的前n位都设为1,第n+1位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的unicode码。
参考:
http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html