UTF小记(一)

前言

十六进制(简写为hex或下标16)在数学中是一种逢16进1的进位制。通常用数字0到9和字母A到F(或a~f)表示,其中:A~F表示10~15,这些称做十六进制数字。
不一样电脑系统编程语言对于16进制数值有不一样的表示方式:
1.   C语言、C++、ShellPythonJava语言及其余相近的语言使用字首“0x”,例如“0x5A3”。开头的“0”令解析器更易辨认数,而“x”则表明十六进制(就如“O”表明八进制)。在“0x”中的“x”能够大写小写。对于字符量C语言中则以x+两位十六进制数的方式表示,如xFF。
2.  在HTML,十六进制字元能够用“x”,例如֣和֣效果应该无异。

1. UTF-8 

UTF-88-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,也是一种前缀码。它能够用来表示Unicode标准中的任何字符,且其编码中的第一个字节仍与ASCII兼容,这使得原来处理ASCII字符的软件无须或只须作少部分修改,便可继续使用。所以,它逐渐成为邮箱网页及其余存储或发送文字的应用中,优先采用的编码。

UTF-8使用一至六个字节为每一个字符编码(尽管如此,2003年11月UTF-8被RFC 3629从新规范,只能使用原来Unicode定义的区域,U+0000到U+10FFFF,也就是说最多四个字节):php

  1. 128个US-ASCII字符只需一个字节编码(Unicode范围由U+0000至U+007F)。
  2. 带有附加符号拉丁文希腊文西里尔字母亚美尼亚语希伯来文阿拉伯文叙利亚文它拿字母则须要两个字节编码(Unicode范围由U+0080至U+07FF)。
  3. 其余基本多文种平面(BMP)中的字符(这包含了大部分经常使用字,如大部分的汉字)使用三个字节编码(Unicode范围由U+0800至U+FFFF)。
  4. 其余极少使用的Unicode 辅助平面的字符使用四至六字节编码(Unicode范围由U+10000至U+1FFFFF使用四字节,Unicode范围由U+200000至U+3FFFFFF使用五字节,Unicode范围由U+4000000至U+7FFFFFFF使用六字节)。

换句话说,其编码规则以下:算法

  1. 字符代码在000000 – 00007F之间的,用一个字节编码;
  2. 000080 – 0007FF之间的字符用两个字节;
  3. 000800 – 00D7FF 和 00E000 – 00FFFF之间的用三个字节,注: Unicode在范围 D800-DFFF 中不存在任何字符;
  4. 010000 – 10FFFF之间的用4个字节。

UTF-16 则是定长的字符编码,大部分字符使用两个字节编码,字符代码超出 65535 的使用四个字节,以下:编程

  1. 000000 – 00FFFF 两个字节;
  2. 010000 – 10FFFF 四个字节。

对上述说起的第四种字符而言,UTF-8使用四至六个字节来编码彷佛太耗费资源了。但UTF-8对全部经常使用的字符均可以用三个字节表示,并且它的另外一种选择,UTF-16编码,对前述的第四种字符一样须要四个字节来编码,因此要决定UTF-8或UTF-16哪一种编码比较有效率,还要视所使用的字符的分布范围而定。不过,若是使用一些传统的压缩系统,好比DEFLATE,则这些不一样编码系统间的的差别就变得微不足道了。若顾及传统压缩算法在压缩较短文字上的效果不大,能够考虑使用Unicode标准压缩格式(SCSU)。网络

互联网工程工做小组(IETF)要求全部互联网协议都必须支持UTF-8编码[2]互联网邮件联盟(IMC)建议全部邮箱软件都支持UTF-8编码。[3]编程语言

相关文章
相关标签/搜索