最初只有一个字节的ascii编码包括0-127,也就是英文字符,比如abcdef!@#*&^等等,然后还有其他语言的编码,比如专门为中文设计的gbk编码……这些编码是不兼容的。为了兼容所有的编码,统一制定了unicode字符集。Unicode只是一个字符集,它为世界上的每一个字符分配了一个编号,这些编号在传输过程中需要进行编码和解码。这里编解码的工具是utf-8。除了utf-8,还有utf-16,utf-32utf-8:多字节编码的字符,一个字符可以用1-6个字节编码,这样最大的好处是节省内存,例如,0x01只需要用一个字节存储为ascii,一个汉字用两个字节utf-16:每个字符用两个字节编码,java字符串是utf-16utf-32:每个字符用4个字节编码unicode字符集和unicodeencoding转换方式如下unicodeutf-800000000-0000007f0xxxxxxx00000080-000007ff110xxxxx10xxxxxx00000800-0000ffff1110xxxx10xxxxxx10xxxxxx00010000-001fffff11110xxx10xxxxxx10xxxxxx10xxxxxx00200000-03ffffff111110xx10xxxxxx10xxxxxx10xxxxxx10xxxxxx04000000-7fffffff1111110x10xxxxxx10xxxxxx10xxxxxx10xxxxxx10xxxxxx在上面的表中,utf-8下面的x用来填充字符的01位,每个字节前面的0,10,110...等用来判断字节数oc被utf-8中的这个字符所吸引
