字符集(Charset):是一个系统支持的所有抽象字符的集合。字符是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等。
字符编码:是一套规则,将字符和二进制数据建立映射关系。
按照出现的时间:
1、ASCLL(American Standard Code for Information Interchange):它包含一个字节,128个字符;
2、EASCLL:包含256个字符,它是对ASCALL的扩展。
3、ISO-8859:计算机传到欧洲之后,之前的字符集不够使用了,国际标准化组织对ASCLL做了扩展,类似EASCLL,因为欧洲语言环境复杂,出现了很多子标准,例如ISO-8859-1、ISO-8859-2.....
4、GB2312:当传到亚洲之后,国际化标准也不够用了,256个字符远远满足不了需求,扩展为双字节,16bit。GB2312为中文编码,包含6763个汉字。
天朝专家把那些127号之后的奇异符号们(即EASCII)取消掉,规定:一个小于127的字符的意义与原来相同,但两个大于127的字符连在一起时,就表示一个汉字,前面的一个字节(他称之为高字节)从0xA1用到 0xF7,后面一个字节(低字节)从0xA1到0xFE,这样我们就可以组合出大约7000多个简体汉字了。在这些编码里,还把数学符号、罗马希腊的 字母、日文的假名们都编进去了,连在ASCII里本来就有的数字、标点、字母都统统重新编了两个字节长的编码,这就是常说的"全角"字符,而原来在127号以下的那些就叫"半角"字符了。
5、GBK:就是对GB2312的扩展。
6、Unicode:统一码、万国码、单一码、标准万国码。当计算机传遍全世界的时候,unicode 出现了。Unicode 是字符集,UTF-8、UTF-16、UTF-32是编码方案。Unicode 包含4个字节,32bit。
7、UTF-32(UCS-4):包含4个字节,对Unicode中的每一个字符都使用4个字节,浪费空间;但是也有优点,它可以在字符串中快速定位到指定字符
8、UTF-16:包含2个字节,16bit。因为常用字符不会超过65536,这样可以节省一半的空间,相比UTF-32.对于超过的部分,也有其他方法可以解决。
9、UTF-8:可变长度字节编码,采用1到4个字节来为unicode字符编码。
参考文件:
字符历史:
http://www.jianshu.com/p/bd7a6c508c33
字符详情:
http://www.cnblogs.com/skynet/archive/2011/05/03/2035105.html
UTF-8的详细解释:
http://cenalulu.github.io/linux/character-encoding/