造冰箱的熊猫@cnblogs 2018/12/11
用了这么久的UTF-8,第一次了解了点UTF-8的细节
UTF-8[1]属于变长度编码。一个UTF-8字符的编码长度为1~4个字节。
1)长度为1个字节的UTF-8字符:取值为b0xxx'xxxx,等于相同取值的ASCII字符,共计128个。对应的编码点(code point)为U+0000~U+007F。
2)长度为2个字节的UTF-8字符:取值为b110x'xxxx,b10xx'xxxx。对应的编码点为U+0080~U+07FF,共计1920个。
3)长度为3个字节的UTF-8字符:取值为b1110'xxxx,b10xx'xxxx,b10xx'xxxx。对应的编码点为U+0800~U+FFFF。RFC3629[2]规定,U+D800~U+DFFF为无效编码点,因此共计61440个。
4)长度为4个字节的UTF-8字符:取值为b1111'0xxx,b10xx'xxxx,b10xx'xxxx,b10xx'xxxx。对应的编码点为U+10000~U+10FFFF,共计1’048‘576个。
合计UTF-8编码的字符为1’112‘064个。
ASCII(American Standard Code for Information Interchange)属于单字节编码,取值范围为0x00~0x7F/b0xxx'xxxx。取值范围为b1xxx'xxxx为扩展ASCII。
参考