UTF-8

UTF-8

  • 描述
    • 使用变长 (1-4) 个字节表示
    • 字节数与 Unicode 编号大小相关
      • 编号小的字节少,编号大的字节多
  • UTF-8 编码
    • 编码范围与二进制格式
      • 编号范围
        • 0x00 ~ 0x7F (0~127)
          • 二进制格式:0xxxxxxx
        • 0x80 ~ 0x7FF (128~2047)
          • 二进制格式:110xxxxx 10xxxxxx
        • 0x800 ~ 0xFFFF (2048~65535)
          • 二进制格式:1110xxxx 10xxxxxx 10xxxxxx
        • 0x10000 ~ 0x10FFFF (65536 以上)
          • 二进制格式:11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
      • 说明
        • x 表示可用的二进制位
        • 每个字节开头的 1 或 0 是固定的
        • 小于 128 的编号 (与 ASCII 码一样)
          • 最高位为 0
        • 其他编号的第一个字节有特殊含义
          • 最高位有几个连续的 1,就表示用几个字节表示
          • 其他字节都以 10 开头
    • 编码过程
      • 步骤
        • 将 Unicode 编号看作整数
        • 转化为二进制形式 (去掉高位的 0)
        • 将二进制位从右向左依次填入对应的二进制格式 x 中
        • 填完后,如果对应的二进制格式还有没填的 x,则设为 0
      • 示例:“马”的 Unicode 编号是 0x9A6C,整数编号是 39532
        • 将二进制位填入 1110xxxx 10xxxxxx 10xxxxxx 格式
        • UTF-8 编码的十六进制表示:0xE9A9AC
    • 特点
      • 兼容 ASCII
      • 对大部分中文而言,一个中文字符需要用三个字节表示

文章作者: huan
版权声明: 本博客所有文章除特別声明外,均采用 CC BY-NC-ND 4.0 许可协议。转载请注明来源 huan !
  目录