字符编码和编码方式
unicode是一种字符编码规定,比如规定了数32h就表示字符’2’,数61h就表示字符’a’等等。
unicode并不规定编码方式,也就是说它只建立一种对应关系,而怎么在实际的程序中去实现这种对应关系不作规定。
比如我们可以这样实现:
用4个字节表示一个整数,然后再去找unicode对应表中这个整数对应的字符,于是就能用四个字节表示一个字符了。这种实际实现的对应方法叫编码方式。
比如utf8就是一种计算机中常用的编码方式,其部分实现看下表:
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
也就是说,当我们查看一个字节,若发现字节位是110开头的,我们就知道这个字节和接下来的一个字节(共两个字节)一起表示了一个字符。我们将这个字节的低5位和下一字节的低6位拼起来,一共是11位,然后用这11位所表示的数(这个数位于[80h, 7ffh]
之间)去unicode对应表中找到其对应的字符,就是这两个字节用utf8解码的字符了。