UTF-8(8-bit Unicode Transformation Format)是一种变长编码方式,可以用来表示Unicode字符集中的所有字符。其编码规则如下:
对于ASCII字符(U+0000至U+007F),UTF-8使用1个字节来编码,高位bit为0,后面7位用来表示字符的Unicode码。
对于非ASCII字符,UTF-8使用多个字节来编码。具体规则如下:
如果字符的Unicode码在U+0080至U+07FF之间,UTF-8使用2个字节来编码。编码方式为:110xxxxx 10yyyyyy,其中高5位为110,表示使用2个字节,后面的6位用来表示字符的高5位Unicode码;第二个字节的高2位为10,后面的6位用来表示字符的低6位Unicode码。
如果字符的Unicode码在U+0800至U+FFFF之间,UTF-8使用3个字节来编码。编码方式为:1110xxxx 10yyyyyy 10zzzzzz,其中高4位为1110,表示使用3个字节,后面的4位用来表示字符的高4位Unicode码;第二个字节的高2位为10,后面的6位用来表示字符的中间6位Unicode码;第三个字节的高2位为10,后面的6位用来表示字符的低6位Unicode码。
对于更大的Unicode码,UTF-8使用更多字节来编码,规则相似。
通过这种编码方式,UTF-8可以表示Unicode字符集中的任意字符,并且对于ASCII字符,使用的字节数与ASCII编码完全一致,这使得UTF-8兼容ASCII编码。