zoukankan      html  css  js  c++  java
  • UTF8编码

    Unicode是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案。

    Unicode用数字0-0x10FFFF来映射这些字符,最多可以容纳1114112个字符,或者说有1114112个码位。码位就是可以分配给字符的数字。

    事实证明,对可以用ASCII表示的字符使用UNICODE并不高效,因为UNICODE比ASCII占用大一倍的空间,而对ASCII来说高字节的0对他毫无用处。为了解决这个问题,就出现了一些中间格式的字符集,他们被称为通用转换格式,即UTF(Universal Transformation Format)。

    UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,又称万国码。

    UTF-8转换表表示如下:
    Unicode/UCS-4
    bit数
    UTF-8
    byte数
    备注
    0000 ~
    007F
    0~7
    0XXX XXXX
    1
     
    0080 ~
    07FF
    8~11
    110X XXXX
    10XX XXXX
    2
     
    0800 ~
    FFFF
    12~16
    1110XXXX
    10XX XXXX
    10XX XXXX
    3
    基本定义范围:0~FFFF
    1 0000 ~
    1F FFFF
    17~21
    1111 0XXX
    10XX XXXX
    10XX XXXX
    10XX XXXX
    4
    Unicode6.1定义范围:0~10 FFFF
    20 0000 ~
    3FF FFFF
    22~26
    1111 10XX
    10XX XXXX
    10XX XXXX
    10XX XXXX
    10XX XXXX
    5
    说明:此非unicode编码范围,属于UCS-4 编码
    早期的规范UTF-8可以到达6字节序列,可以覆盖到31位元(通用字符集原来的极限)。尽管如此,2003年11月UTF-8 被 RFC 3629 重新规范,只能使用原来Unicode定义的区域, U+0000到U+10FFFF。根据规范,这些字节值将无法出现在合法 UTF-8序列中
    400 0000 ~
    7FFF FFFF
    27~31
    1111 110X
    10XX XXXX
    10XX XXXX
    10XX XXXX
    10XX XXXX
    10XX XXXX
    6
    实际表示ASCII字符的UNICODE字符,将会编码成1个字节,并且UTF-8表示与ASCII字符表示是一样的。所有其他的UNICODE字符转化成UTF-8将需要至少2个字节。每个字节由一个换码序列开始。第一个字节由唯一的换码序列,由n位连续的1加一位0组成, 首字节连续的1的个数表示字符编码所需的字节数。
    Unicode转换为UTF-8时,可以将Unicode二进制从低位往高位取出二进制数字,每次取6位,如上述的二进制就可以分别取出为如下示例所示的格式,前面按格式填补,不足8位用0填补。
    注:Unicode转换为UTF-8需要的字节数可以根据Unicode 二进制的位数除以6来计算。
  • 相关阅读:
    Windows Azure入门教学系列 (九):Windows Azure 诊断功能
    批量删除同类文件的函数
    Edit 的使用
    @ 与 ^ 运算符
    窗体相关操作
    uses 子句的写法
    goto 语句
    字符串常识
    not 与整数
    Memo 的当前行、当前列与当前字符
  • 原文地址:https://www.cnblogs.com/417460188dy/p/3435639.html
Copyright © 2011-2022 走看看