Unicode
我们知道unicode编码解决了ASCII码只支持英文数字等字符的单一问题;
unicode编码目前普遍采用USC-2格式,该格式采用两个字节来编码一个字符,所以两个字节最多可以表示2^16=65536个字符(一个字节为8位)
但是两个字节的容量要表示的是各国语言,而汉字字符----简体加繁体字就共有约7w个!,显然2个字节根本无法囊括所有汉字。因此也有采用USC-4格式,即4个字节来编码字符的情况,但目前为止普遍仍采用USC-2格式,毕竟常用几千个汉字足以满足所需!
同时字符编码一般用十六进制来表示,比如汉字"经"的编码是0x7ECF,其中0x表示十六进制,7ECF若转换为十进制就是32463,二进制为1111110 11001111,两个字节足以表示这个字符
当然,unicode编码表也继承了ASCII码表中的字符,只是以十六进制的形式来表示而已。例如,字符”a“在ASCII码表中对应的十进制序号为97,在unicode编码表中对应的十六进制序号为0x61,换算到十进制仍然为序号97!
UTF-8
如前所述,unicode编码有诸多问题。首先,它始终采用两个字节来表示字符,这就会对只需要一个字节来表示的字符来说,产生浪费空间的情况;其次,两个字节能表示的字符太有限!
这个时候,UTF-8编码规则发挥作用的时候到了,它是一种可变长度的编码规则,根据不同情况可以占用1~4个字节不等。
那么就会有一个问题,既然字符所占有的字节数不尽相同,程序在读一段连续的字节的时