unicode和utf-8编码
最开始是只有一个字节的ascii编码包括0-127,也就是英文字符,比如abcdef还有!@#*&^等等
然后又有了其它语言的编码,例如专门为中文设计的gbk编码...
这些编码是不兼容,为了兼容所有的编码,统一制定了unicode字符集
unicode只是一个字符集,它为全世界每一个字符分配一个数字,而这些数字在传输过程中,需要进行编码,解码,这里编码,解码的工具就是utf-8,除了utf-8,还有utf-16,utf-32
utf-8:多字节编码的字符,一个字符可以通过1-6个字节来编码,这样做的最大的优点就是节约内存,例如0x01只需要按照ascii那样使用一个字节来存储,而一个汉子则用两个字节 utf-16:每个字符使用两个字节来编码,java的字符串就是utf-16 utf-32:每个字符使用4个字节来编码
unicode字符集和unicode编码的转换方式如下
unicode utf-8 00000000-0000007f 0xxxxxxx 00000080-000007ff 110xxxxx 10xxxxxx 00000800-0000ffff 1110xxxx 10xxxxxx 10xxxxxx 00010000-001fffff 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx 00200000-03ffffff 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 04000000-7fffffff 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
在上面的表中,utf-8下面的x就是用来填充字符的01比特的,而每个字节前面的0,10,110...等等是用来确定这个字符在utf-8中占用的字节数的