### unicode,GBK,utf-8,utf-16相关知识
1.Unicode是字符集,为每一个字符分配一个码位。
字符集的定义:为每一个字符分配一个唯一ID,这个唯一ID学名为码点\码位\code point
1. char类型占2字节,java使用的是Unicode字符集而不是ASCII
1) 1个字节(8位),组合出256种状态,局限是只能显示字母数字,英式标点符号,适用于美国英语,对其它语言无能为力。
2) 简体中文常见的编码方式是GB2312,使用2个字节表示一个汉字。
3) Unicode,万国码每一个符号都给与一个独一无二的编码,是用来映射字符和数字的标准。但并没有规定如何存储。
4) 使用Unicode编码方式
* UTF-8,0-127号字符使用和ASCII相同的编码,128以上 的采用2,3,4个字节表示,他是一个可变长度的编码方式,优势是包罗万象,劣势是浪费空间,utf-8是一编码规则。
* UTF-16 占用2或4个字节
* GB 2312 出于utf-8浪费空间的考虑,然后发布了使用2个字节编码中文汉字的编码方式。GBK是GB2312的扩展
5) char为什么是两个字节?
刚开始unicode收录字符并不多,2个字节完全可以表示,随着unicode收录字符越来越多,超过的部分只能用2个char表示(utf-16),utf-16兼容使用char为2字节的编码方式。