参考自:http://blog.csdn.net/ldanduo/article/details/8203532/
http://blog.csdn.net/dongchongyang/article/details/52484794
http://www.cnblogs.com/kingcat/archive/2012/10/16/2726334.html
1.ASCII,American Standard Code for Information Interchange(美国信息互换标准代码)。规定了0到127号字符(7位)。是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是现今最通用的单字节编码系统,并等同于国际标准ISO/IEC 646。
2.最开始是ASCII编码(7位),然后世界各地扩展到8位,称为“扩展字符集”。
3.中国人使用计算机后,规定:一个小于127的字符的意义与原来相同,但两个大于127的字符连在一起时,就表示一个汉字,前面的一个字节(他称之为高字节)从0xA1用到 0xF7,后面一个字节(低字节)从0xA1到0xFE,这样我们就可以组合出大约7000多个简体汉字了。这种方案叫做“GB2312”。
4.后来还是不够用,于是干脆不再要求低字节一定是127号之后的内码,只要第一个字节是大于127就固定表示这是一个汉字的开始。这个就叫做“GBK”编码。GBK 包括了 GB2312 的所有内容,同时又增加了近20000个新的汉字(包括繁体字)和符号。
5.GB2312和GBK都可以看做是ASCII的扩展。
6.ANSI码(American National Standards Institute),美国国家标准学会的标准码。ANSI码仅在前126个与ASCII码相同。
7.在简体中文Windows操作系统中,ANSI 编码代表 GBK 编码;在英文Windows操作系统中,ANSI 编码代表 ASCII编码;在繁体中文Windows操作系统中,ANSI编码代表Big5;在日文Windows操作系统中,ANSI 编码代表 Shift_JIS 编码。
8.各国编码不兼容,直到一个叫 ISO (国际标谁化组织)的国际组织出来解决。他们采用的方法很简单:废了所有的地区性编码方案,重新搞一个包括了地球上所有文化、所有字母和符号的编码!他们打算叫它”Universal Multiple-Octet Coded Character Set”,简称 UCS, 俗称 “UNICODE”。
9.ISO 规定必须用两个字节,也就是16位来统一表示所有的字符。
10.UNICODE 是用两个字节来表示为一个字符,他总共可以组合出65535不同的字符,这大概已经可以覆盖世界上所有文化的符号。
11.UNICODE 实际上只是给所有的字符指定一个唯一对应的数字,它跟这些字符如何在计算机中存储没有关系,而UTF-8,UTF-16,规定的是字符如何在计算机中存储。
12.UNICODE 是一个字符集,UTF-8是在这个字符集基础上的一种具体的编码方案为更好的存储和传输,其他还有 UTF-16,UTF-32 等。
13.如果全部英文或英文与其他文字混合,但英文占绝大部分,用UTF-8就比UTF-16节省了很多空间.而如果全部是中文这样类似的字符或者混合字符中中文占绝大多数.UTF-16就占优势了。
14.BOM头的问题……