Unicode
Unicode是一个国际标准,用于文本的编码和表示。它使得可以用标准格式来表示来自任意语言的几乎所有字符,并能够对文本文件和网页这样的外部资源进行读写操作。
Unicode标量
Unicode标量是Unicode中对应字符的唯一21位数字。例如U+0061
表示小写的拉丁字母"a"
,U+1F425
表示小鸡表情🐥
。
字符串的Unicode表示形式
当一个Unicode字符串被写进文本文件存储时,字符串中的Unicode标量会用Unicode定义的几种编码格式:UTF-8,UTF-16,UTF-32。每一个字符串中的小块编码被称为编码单元(code units)
- UTF-8:编码字符串为8位的编码单元
- UTF-16:编码字符串为16位的编码单元
- UTF-32:编码字符串为32位的编码单元
UTF-8编码规则
UTF-8编码规则为:
单子节的字符,字节的第一位为0,对于英语文本,UTF-8只占用一个字节,同ASCII码表一样
-
n个字节的字符(n>1),第一个字节的前n位为1,第(n+1)位为0,后面的字节前两位为10,这n个字节的其余空位填充该字符的Unicode码,高位用0补足
因此就形成了如下的UTF-8标记位:0xxxxxxx 110xxxxx 10xxxxxx 1110xxxx 10xxxxxx 10xxxxxx 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
以
It's 简书
这7个字符(包含s和简之间的空格)Unicode 十六进制 二进制 UTF-8编码 I 0049 01001001 0100 1001 t 0074 01110100 0111 0100 ' 0027 00100111 0010 0111 s 0073 01110011 0111 0011 (space) 0020 00100000 0010 0000 简 7b80 0111 101110 000000 11100111 10101110 10000000 书 4e66 0100 111001 100110 11100100 10111001 10100110
总结
- Unicode是所有的字符集合
- UTF-8是编码的规则