Unicode与UTF-8

2018-05-16  本文已影响7人  NapoleonY

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编码规则

UTF-8编码规则为:

  1. 单子节的字符,字节的第一位为0,对于英语文本,UTF-8只占用一个字节,同ASCII码表一样

  2. 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

总结

  1. Unicode是所有的字符集合
  2. UTF-8是编码的规则

参考

  1. Unicode 和 UTF-8 有何区别?
  2. Unicode
上一篇 下一篇

猜你喜欢

热点阅读