传统的字符编码标准
传统的字符编码标准中定义的字符不能覆盖所有的国家,并且每个标准的编码不一致,导致常常出现乱码的情况。
ASCII
ASCII -nAmerican Standard Code for Information Interchange,美国信息交换标准编码,基于拉丁字母的字符编码标准。采用的是7位二进制数的编码规则。
- 编号0~31:非打印字符
- 编号48~57:数字0到9
- 编号65~90:大写字母A~Z
-
ISO 8859
ISO 8859 -n与ASCII属于单个独立的字符集不同,ISO/IEC 8859是一组字符集的总称,其下共包含了15个字符集,即ISO/IEC 8859-n,其中n=1,2,3,…,15,16(其中12未定义,所以共15个)。编码方式上,扩展了ASCII字符集没有用到的第8位。
ISO 8859-1 -n收录了西欧常用字符(包括德法两国的字母),目前使用得最为普遍。还有一个别名Latin-1。GB2312-1980
GB2312-1980 -n中文字符编码国家标准。前127位为了兼容ASCII采用单字节编码(ASCII作为子集),超过128位的编号采用双字节编码
全角和半角
在计算机早期,英文字符可以使用1个字节表示,但是中文需要2个字节表示。又因为当时流行等宽字体,为了一致性中文和英文写在一起时,英文就需要扩展全宽字符。
全角和半角字符的在屏幕上显示分别是全宽(fullwidth)和半宽(halfwidth)。
- 全角字符占2个字节存储空间,半角占一个字节的存储空间。
- 在GB2312中文字符编码中,编号0~127仍采用ASCII单字节编码规则(半角),此外ASCII中的字符又使用双字节重新编码(全角)。但是对于中文字符没有全角和半角之分。
GBK
GBK -n扩展GB2312的编码国家标准,同时与GB2312-1980的编码方式也不一样。
关键点GBK只要求第一个字节即高字节是大于127就固定表示这是一个汉字的开始(0~127当然表示的还是ASCII字符),不再要求第二个字节即低字节也必须是127号之后的编码。这样,作为同样是双字节编码的GBK才可以收录比GB2312更多字符。GB18030
GB18030 -n扩展、替代GBK标准,同时新增少数名族字符。