当前位置: 首页 > news >正文

网站域名不合法单个药品营销策划方案

网站域名不合法,单个药品营销策划方案,wordpress禁止更新代码,齐河网站建设本文主要讨论Unicode的编码与各种实现#xff0c;着重讨论UTF-16#xff0c;UTF-8的实现规则#xff0c;以及Big-endian和Little-Endian的存储规则。 一、Unicode编码 Unicode出现之前已经有各种编码标准#xff1a;ANSI、ISO8859-1、GB2312、GBK以及BIG-5等。Unicode试图统… 本文主要讨论Unicode的编码与各种实现着重讨论UTF-16UTF-8的实现规则以及Big-endian和Little-Endian的存储规则。 一、Unicode编码 Unicode出现之前已经有各种编码标准ANSI、ISO8859-1、GB2312、GBK以及BIG-5等。Unicode试图统一各种编码在Unicode演进过程中也有自身不断修复的过程刚开始的时候认为16位可以表达65535个字符已经足够收集所有的字符后来随着大量中文、韩文和日文等表意文字的加入已经超出了65535个字符16位已经不能描述所有的字符集了。 在Unicode字符集中的某个字符对应的代码值称作代码点Code Point用16进制书写并加上U前缀。比如‘田’的代码点是U7530‘A’的代码点是U0041。 前面说过Unicode的字符已经超过16位所能表达的范围把所有这些CodePoint分成17个代码平面Code Plane U0000 ~ UFFFF划入基本多语言平面Basic MultilingualPlane简记为BMP其余划入16个辅助平面Supplementary Plane代码点范围U10000 ~ U10FFFF。 虽然这样划分但并不是每个Plane中的Codepoint都对应有字符这里面有保留的还有特殊用途的。 二、Unicode编码的实现 Unicode的实现方式不同于编码方式。一个字符的Unicode编码是确定的但是在实际存储和传输过程中由于不同系统平台的设计不一定一致以及出于节省空间的目的对Unicode编码的实现方式有所不同。Unicode的实现方式称为Unicode转换格式UnicodeTransformation Format简称为UTF。 对Unicode编码的实现方式有UTF-16BE、UTF-16LE、UTF-8、UTF-7以及UTF-32等实现方式目前通用的实现方式是UTF-16LE、UTF-16BE和UTF-8。 2.1 UTF-16 UTF-16是用16bit编码来表达Unicode这样表达范围是216即65536。如果表达BMP内的字符用一个UTF-16就可表达对于辅助平面内的字符UTF-16有巧妙的设计。 BMP内从UD800到UDFFF之间的码位区段是永久保留不映射到字符 UTF-16利用保留下来的0xD800-0xDFFF区段的码位来对辅助平面的字符的码位进行编码。 对U0000 ~ UD7FF以及UE000 ~ UFFFF的编码 UTF-16与UCS-2编码这个范围内的码位为单个16比特长的码元数值等价于对应的码位。BMP中的这些码位是仅有的码位可以在UCS-2被表示。 对U10000 ~ U10FFFF的编码 辅助平面(Supplementary Planes)中的码位在UTF-16中被编码为一对16比特长的码元即32bit4Bytes称作代理对(surrogatepair)。 具体方法是 UTF-16解码 hi \ lo DC00 DC01    …    DFFF D800 10000 10001 … 103FF D801 10400 10401 … 107FF   ⋮ ⋮ ⋮ ⋱ ⋮ DBFF 10FC00 10FC01 … 10FFFF 码位减去0x10000 得到的值是长度为20bit0..0xFFFFF步骤1得到数值的高位的10比特的值值范围为0..0x3FF被加上0xD800得到第一个码元或称作高位代理high surrogate或前导代理lead surrogate。值的范围是0xD800..0xDBFF。步骤1得到数值的低位的10比特的值值范围为0..0x3FF被加上0xDC00得到第二个码元或称作低位代理low surrogate或后尾代理trail surrogate。值的范围是0xDC00..0xDFFF。 这样这个范围内的字符就被编码成了一个代理对[lead surrogate,trail surrogate]两个16bits码元取值范围分别是0xD800..0xDBFF,0xDC00..0xDFF。而BMP中得到的码元范围0x0000..0xFFFF中0xD800..0xDFFF又是保留的所以这三个区段是相互不重叠的在解码时很容易实现。UTF-16解码高位代理低位代理得到的码元与码位的对应关系如上表所示 下面以对U64321的UTF-16编码为例看一下对于辅助平面内的字符的编码实现 V  0x64321 Vx V - 0x10000    0x54321     01010100 0011 0010 0001   Vh  01 0101 0000 // Vx 的高位部份的 10 bits Vl  11 0010 0001 // Vx 的低位部份的 10 bits w1 0xD800 //结果的前16位元初始值 w2 0xDC00 //结果的后16位元初始值   w1 w1 | Vh    1101 1000 0000 0000    |       01 0101 0000    1101 1001 0101 0000    0xD950   w2 w2 | Vl    1101 1100 0000 0000    |       11 0010 0001    1101 1111 0010 0001    0xDF21 所以这个字 U64321 最后的 UTF-16 编码是 0xD950 0xDF21 对于生成的编码因为对于16Bits的两字节还有存取先后的问题还有Endian的问题这在后续讲述。 2.2 UTF-8 UTF-88-bitUnicode Transformation Format是一种针对Unicode的可变长度字符编码使用一至四个字节为每个字符编码 Unicode范围为U0000..U007F 的128个ASCII字符只需一个字节编码 Unicode范围为U0080..U07FF的字符需要二个字节编码 Unicode范围为U0800..UFFFF的其他BMP中的字符这包含了大部分常用字使用三个字节编码 Unicode 辅助平面的字符其他极少使用的字符使用四字节编码。 对上述提及的第四种字符而言UTF-8使用四个字节来编码似乎太耗费资源了。但UTF-8对所有常用的字符都只用三个字节表达而且UTF-16编码对前述的第四种字符同样需要四个字节来编码而如果是ASCII居多的字符UTF-8能极大的节约存储空间。UTF-8逐渐成为电子邮件、网页及其他储存或传送文字的应用中优先采用的编码。互联网工程工作小组IETF要求所有互联网协议都必须支持UTF-8编码。互联网邮件联盟IMC建议所有电子邮件软件都支持UTF-8编码。 对CodePoint各个范围内的字符进行UTF-8编码的规则如下 Code point UTF-8字节流 U00000000 – U0000007F 0xxxxxxx U00000080 – U000007FF 110xxxxx 10xxxxxx U00000800 – U0000FFFF 1110xxxx 10xxxxxx 10xxxxxx U00010000 – U001FFFFF 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx 其中UD800到UDFFF之间的区段在Unicode的定义中没有具体字符使用的被用来在UTF-16编码中对辅助平面的字符进行编码。 下面以“田”CodePoint为U7530为例看如何对其进行UTF-8编码 U7530落在U0800..UFFFF区间采用三字节编码 0x7530转换为二进制为111 010100 110000 代入表中得到111001111001010010110000 这样得到“田”U7530的UTF-8编码0xE7 94 B0。 知道UTF-8的编码规则我们可以对于UTF-8编码中的任意字节B进行下面解码 如果B的第一位为0则B为ASCII码并且B独立的表示一个字符如果B的第一位为1第二位为0则B为一个非ASCII字符该字符由多个字节表示中的一个字节并且不为字符的第一个字节编码字符的第一个字节之外的后编码 如果B的前两位为1第三位为0则B为一个非ASCII字符该字符由多个字节表示中的第一个字节并且该字符由两个字节表示 如果B的前三位为1第四位为0则B为一个非ASCII字符该字符由多个字节表示中的第一个字节并且该字符由三个字节表示 如果B的前四位为1第五位为0则B为一个非ASCII字符该字符由多个字节表示中的第一个字节并且该字符由四个字节表示。 2.3 UCS-2 vs UTF-16UCS-4 vs UTF-32 UCS-2每个字符占用2个字节。UCS-2是UTF-16的子集。在没有辅助平面前UTF-16与UCS-2所指的是同一的意思。但当引入辅助平面字符后UTF-16加入了对辅助平面内的字符的支持。现在若有软件声称自己支持UCS-2编码那其实是暗指它不支持UTF-16中超过2bytes的字集。亦即对于小于0x10000的UCS码UTF-16编码就等于UCS码。Java早期版本对Unicode的支持就只是UCS-2的支持现在加入了对UTF-16的完整支持。 UCS-4与UTF-32的意义一致对每个字符都使用4字节31位字符集加上恒为0的首位共需占据32位。理论上最多能表示231个字符完全可以涵盖一切语言所用的符号。虽然每一个码位使用固定长定的字节看似方便对于普通只需要2个字节存储的常用字占绝大对数的字符集来说却极大的浪费了空间并没怎么得到应用。 三、Big-Endian/Little-Endian与BOM 在讲UTF-16编码方式时说到最终生成的编码可能是2个字节BMP内的字符这两个字节在传输和存储过程中高/低位位置不同是不同的字符。比如“田”的UTF-16编码是0x7530但是如果存成0x3075就变成了“ふ”另外的字符。 所以为了识别一个编码过的字符的存储顺序必须用特殊字符来指示。Unicode字符中UFEFF被用来指示这种存储顺序被称作Byte Order MarkBOM。 Big-Endian最低位地址存放高位字节可称高位优先内存从最低地址开始按顺序存放高数位数字先写。最高位字节放最前面。 Little Endian最低位地址存放低位字节可称低位优先内存从最低地址开始按顺序存放低数位数字先写。最低位字节放最前面。 所以BOM在Big-Endian系统上存储为FE FF而在Big-Endian系统上存储则为FF FE。在以Big-Endian存储的UTF-16UTF-16BE的文件的开头用FEFF指示以Little-Endian存储的UTF-16UTF-16LE的文件的开头用FEFF指示。 在Windows的记事本上另存为的时候你可以选择不同的Endian存储然后再用纯文本编辑工具Ultra-edit来检验一下UTF-16的存储顺序。 BOM的UTF-8编码为11101111 1011101110111111 (EF BB BF)所以一般EF BB BF被放在文本的开头用来指示其编码为UTF-8。 【附】基本概念对照 Code Point码位 Code Unit码元是指一个已编码的文本中具有最短的比特组合的单元。对于UTF-8来说码元是8比特长对于UTF-16来说码元是16比特长对于UTF-32来说码元是32比特长。 BMP - Basic Multilingual Plane UTF - Unicode Transformation Format BOM – Byte Order Mark UCS - Universal Character Set
http://www.pierceye.com/news/629549/

相关文章:

  • 苏州企业建设网站公司400电话网站源码
  • 贵州住房和城乡建设厅官网泰安千橙网站建设优化熊掌号
  • metro网站模板平面设计师网站
  • 怎样通过阿里云建设网站国内免费crm
  • 网站开发都需要学什么iis7网站建设
  • 网站 关键字it网站建设资讯网
  • 白银网站建设公司石家庄建行网站
  • 做网站全部乱码怎么办教学资源网站建设方案
  • 自己做的网站怎么添加文档做淘宝详情的网站
  • 安全认证的机票网站成就怎么做山东省住房和城乡建设厅政务服务
  • 海口网站建设方案咨询信息流优化师面试常见问题
  • 网上课程网站wordpress自定义页面分页
  • 自建站成本深圳网站建设营销服务平台
  • 模仿网站怎么做网站编辑建设
  • 湖南做网站 磐石网络引领免费网上开店
  • wordpress内容做成目录seo排名分析
  • 大型网站 网站建设做网站赔了8万
  • python官方网站建设网站要什么
  • 青海 网站开发 图灵如何创建自己的网页
  • 建设银行网站怎么登陆不做网站首页的尺寸
  • 谁能给我一个网站谢谢dedecms收费怎么办
  • dede 网站地图 模块青岛做网站服务商
  • 征信网站开发扬州市建设局网站
  • 教育网站建设 飞沐软件定制公司值得去吗
  • 金耀网站建设网站制作景观建筑人才网
  • 仿《爱美眉》网站 dede门户网站的主要功能
  • 外发加工网站深圳如何优化
  • 做设计在哪个网站上找高清图片大全网站建设风险分析
  • 做兼职哪个网站好哪些网站做免费送东西的广告6
  • 网站建设战略互动模板wordpress