UTF-8 编码
UTF-8 编码是针对Unicode的一种可变长度字符编码。
UTF-8 编码
特点
- 1采用变长多字节编码,采用1-4个字节对字符进行编码;
- 2能够表示UNICODE标准中任何字符;
- 3Unicode只是一组字符设定或者说是字符逻辑映射的概念编码,可认为是一个字符集;
- 4UTF-8是Unicode字符编码在计算机中储存编码;
字节编码与字符
- 单字节编码: ASCII字符 Unicode范围:U+0000-U++7F
- 双字节编码: 带变音符号的语言字符 Unicode范围: U+0080-U+07FF
- 三字节编码: 中日韩CJK、东南亚、中东语言字符
- 四字节编码: 极少使用的语言字符
字节编码规则
- 单字节字符,字节的二进制最高位位值为0。
- 多字节字符,首字节的二进制连续高位位值为1的个数决定字节数目,其他字节的二进制前两位一律为10,剩余的二进制位值由Unicode码点值决定。
1字节 | 0xxxxxxx | |||||
2字节 | 110xxxxx | 10xxxxxx | ||||
3字节 | 1110xxxx | 10xxxxxx | 10xxxxxx | |||
4字节 | 11110xxx | 10xxxxxx | 10xxxxxx | 10xxxxxx | ||
5字节 | 111110xx | 10xxxxxx | 10xxxxxx | 10xxxxxx | 10xxxxxx | |
6字节 | 1111110x | 10xxxxxx | 10xxxxxx | 10xxxxxx | 10xxxxxx | 10xxxxxx |
Unicode码点范围与UTF-8编码字节
1字节 | 7 | U+0000 0000 | U+0000 007F | 0xxxxxxx | |||
2字节 | 11 | U+0000 0080 | U+0000 07FF | 110xxxxx | 10xxxxxx | ||
3字节 | 16 | U+0000 0800 | U+0000 FFFF | 1110xxxx | 10xxxxxx | 10xxxxxx | |
4字节 | 21 | U+0001 0000 | U+0010 FFFF | 11110xxx | 10xxxxxx | 10xxxxxx | 10xxxxxx |