美文网首页
Unicode与UTF-8

Unicode与UTF-8

作者: NapoleonY | 来源:发表于2018-05-16 11:25 被阅读7次

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

    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

    相关文章

      网友评论

          本文标题:Unicode与UTF-8

          本文链接:https://www.haomeiwen.com/subject/dphpdftx.html