美文网首页
解读 Unicode

解读 Unicode

作者: chenj23986526 | 来源:发表于2019-12-08 15:00 被阅读0次

    平面 - plane

    共 17 个平面,每个平面占 65536 个字符
    基本多文种平面 - Basic Multilingual Plane(0x0~0xFFFF)
    其余16种补充/辅助平面(0x10000 ~ 0x10FFFF)

    编码空间

    0x0~ 0x10FFFF

    存储定义

    UCS - Universal Character Set

    ISO/IEC 10646 定义

    • UCS-2
      编码空间为 0x0 ~ 0xFFFF
      无辅助平面
      兼容 Unicode,保留 0xD800 ~ 0xDFFF
    • UCS-4
      旧定义
      编码空间为 0x0 ~ 0x7FFFFFFF
      新定义
      编码空间限制为 Unicode (0x0~ 0x10FFFF)
      ISO 承诺不会为超过 0x10FFFF 进行编码

    UTF - Unicode Transformation Format

    UTF-8

    变长编码(1~4字节)
    编码空间为 0x0 ~ 0x10FFFF

    • 对于单字节的符号
      字节第一位设为 0
      后面7位填充编码值
      对于 0x0~0x7F, UTF-8 和 ASCII 码是一致的

    • 对于 n 字节的符号(n>1)
      第一个字节的前 n 位 都是1
      第 n + 1 位设置为 0
      后面字节的前两位为 10
      其余空位填充为编码值

    • 旧的定义
      定义1~6字节
      RFC 2044
      RFC 2279

    • 新的定义 RFC 3629
      定义为1~4字节

      编码范围 字符数 Unicode UTF-8
      0x000000 ~ 0x00007F 128 00000000 00000000 0zzzzzzz 0zzzzzzz(00-7F)
      0x000080 ~ 0x0007FF 1920 00000000 00000yyy yyzzzzzz 110yyyyy(C0-DF)10zzzzzz(80-BF)
      0x000800 ~ 0x00D7FF
      0x00E000 ~ 0x00FFFF
      61440 00000000 xxxxyyyy yyzzzzzz 1110xxxx(E0-EF)10yyyyyy(80-BF)10zzzzzz(80-BF)
      0x010000 ~ 0x10FFFF 1048576 000wwwxx xxxxyyyy yyzzzzzz 11110www(F0-F7)10xxxxxx(80-BF)10yyyyyy(80-BF)10zzzzzz(80-BF)

    UTF-16

    变长编码(2或4字节)
    编码空间为 0x0 ~ 0x10FFFF

    • 与 UCS-2 区别
      UTF-16 是 UCS-2 父集
      当表示 BMP 时, 与 USC-2 编码一致都是16-bit
      当表示辅助平面时,UTF-16为 32-bit,而UCS-2不能表示
    • 辅助平面表示
      码位值 - 0x10000 得到 20-bit 的值(0x0 ~ 0xFFFFF)
      该值前10位 + 0xD800(0xD800 ~ 0xDBFF)
      该值后10位 + 0xDC00(0xDC00 ~ 0xDFFF )
      连接以上两个值得到最终编码值

    UTF-32

    固定 32-bit 编码,与 Unicode 编码数值一致
    编码空间为 0x0 ~ 0x10FFFF

    • 与 UCS-4 区别
      旧定义: UTF-32是 UCS-4 的一个子集
      新定义: 可以认为与 UCS-4 是相同

    相关文章

      网友评论

          本文标题:解读 Unicode

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