摘自

UTF-8的编码规则很简单,只有二条:

1)对于单字节的符号,字节的第一位设为0,后面7位为这个符号的unicode码。因此对于英语字母,UTF-8编码和ASCII码是相同的。

2)对于n字节的符号(n>1),第一个字节的前n位都设为1,第n+1位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的unicode码。

下表总结了编码规则,字母x表示可用编码的位。

Unicode符号范围 UTF-8编码方式
0000 0000-0000 007F 0xxxxxxx
0000 0080-0000 07FF 110xxxxx 10xxxxxx
0000 0800-0000 FFFF 1110xxxx 10xxxxxx 10xxxxxx
0001 0000-0010 FFFF 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

unicode 编码也称万国码,统一码。使用两个字节来表示编码,而utf-8是unicode编码的一种实现方式采用1~4个字节来进行编码,属于变长编码方式。unicode能表示ASCCI码以及他的扩展编码集还有其他,两个字节其实对于汉字,韩文,日文这些超大集合是没办法表示全的,utf-8编码在这时就显得非常必要了。unicode编码中的汉字统一是两个字节,从上表可以看出,当utf-8是三个字节时,他余下的空位刚好是16位(两个字节),所以utf-8中的三个字节可以将unicode中的所以汉字全部包括在内,并在四个字节时做出扩充,所以说汉字在utf-8中都是大于等于三个字节的。