gb2312,gbk,gb18030

GBK的中文编码是双字节来表示的,英文用ASCII,但GBK编码表中也有英文字符双字节表示形式,所以英文字母可以有2中GBK表示方式.为区分中文,将其最高位都定成1.英文单字节最高位都为0.当用GBK解码时,若高字节最高位为0,则用ASCII码表解码;若高字节最高位为1,则用GBK编码表解码.
GBK是在国家标准GB2312基础上扩容后兼容GB2312的标准
gb2312:第1位为1,第2位为1,基于区位码设计
区位码一般用10进制数来表示,如1601就表示16区1位,对应的字符是"啊".在区位码的区号和位号上分别加上0xA0就得到了GB2312编码
区位码中01-09区符号,数字区,16-87区汉字区,10-15和88-94是未定义的空白区.它将收录的汉字分成两级:第一级是常用汉字计3755个,置于16-55区,按汉语拼音字母/笔形顺序排列;第二级汉字是次常用汉字计3008个,置于56-87区,按部首/笔画顺序排列.
gb2312,还包括希腊字母,日文平假名及片假名字母,俄语西里尔字母,实际编码范围是0xA1A1-0xF7FE,
gbk:第1位为1,第2位可能为0
GBK的整体编码范围是为0x8140-0xFEFE,不包括低字节是0*7F的组合.高字节范围是0*81-0xFE,低字节范围是0x(40-7E,用了一半要小心,要先判断前一个字母)和0x80-0xFE.
因此小于0x80的字节未必是ASCII符号;且最好选用小于0*40的ASCII符号做特殊符号,可快速定位,不用担心是某个汉字的另一半.如不要用|等.
GB18030编码向下兼容GBK和GB2312,兼容的含义是不仅字符兼容,且相同字符相同编码.
GBK和GB2312都是双字节等宽编码,如果算上和ASCII兼容所支持的单字节,也可以理解为是单字节和双字节混合的变长编码.GB18030编码是变长编码,有单字节,双字节和四字节三种方式.
GB18030的单字节编码范围是0x00-0x7F,完全等同与ASCII;双字节编码的范围和GBK相同,高字节是0x81-0xFE,低字节的编码范围是0x40-0x7E和0x80-FE;四字节编码中第1,3字节的编码范围是0x81-0xFE,2,4字节是0x30-0x39.(这里可以将再猛一点,将前0x40都利用起来,10*10*10000,百万个字符),
微软CP9360x80来表示欧元,
0x80是CP936对GBK的扩展,而GB18030只是良好兼容GBK.
GBK,GB2312等与UTF8之间都必须通过Unicode编码才能相互转换都是折腾.一个映射的事.
GBK,GB2312以及Unicode都既是字符集,也是编码方式,而UTF-8只是编码方式,并不是字符集
GBK编码中英文字符只占一个字节.

无等待,其实就是尽量减少共享块时间.尽量减少竞争.

你可能感兴趣的:(笔记)