UTF8与UNICODE与GBK编码.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
UTF8与UNICODE与GBK编码

UTF8和UNICODE和GBK编码 UTF8和UNICODE和GBK编码2010-12-14 10:19UTF8并不算是一种电脑编码,而是一种储存和传送的格式,如前所述,每个Unicode/UCS字符都以2或4个bytes来储存,看看以下的比较: 以I am Chinese为例 用ANSI储存:12 Bytes 用Unicode/UCS2储存:24 Bytes+2 Bytes(header) 用UCS4储存:48 Bytes+4 Bytes(header) 以我是中国人为例 用ANSI储存:10 Bytes 用Unicode/UCS2储存:10 Bytes+2 Bytes(header) 用UCS4储存:20 Bytes+4 Bytes(header) 由此可见直接以Unicode/UCS的原始形式来储存是一种极大的浪费,而且也不利于互联网的传输(中文稍为合算一点^_^)。 有见及此,Unicode/UCS的压缩形式-UTF8出现了,套用官方网站的首句话『UTF-8 stands for Unicode Transformation Format-8.It is an octet(8-bit)lossless encoding of Unicode characters.』,由于UTF也适用于编码UCS,故亦可称为『UCS transformation formats(UTF)』 UTF8是以8bits即1Bytes为编码的最基本单位,当然也可以有基于16bits和32bits的形式,分别称为UTF16和UTF32,但目前用得不多,而UTF8则被广泛应用在文件储存和网络传输中。 编码原理 先看这个模板: UCS-4 range(hex.)UTF-8 octet sequence(binary) 0000 0000-0000 007F 0xxxxxxx 0000 0080-0000 07FF 110xxxxx 10xxxxxx 0000 0800-0000 FFFF 1110xxxx 10xxxxxx 10xxxxxx 0001 0000-001F FFFF 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx 0020 0000-03FF FFFF 111110 xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 0400 0000-7FFF FFFF 1111110 x10xxxxxx.10xxxxxx 编码步骤: 1)首先确定需要多少个8bits(octets) 2)按照上述模板填充每个octets的高位bits 3)把字符的bits填充至x中,字符顺序:低位→高位,UTF8顺序:最后一个octet的最末位x→第一个octet最高位x 4)解码的原理一样。 实例:(留意每个bit的颜色,粗体字为模板内容) UCS-4 UTF-8 HEX BIN Bytes BIN HEX Bytes 0000 000A400001010 0A 1 0000 0099411000010C2 99 2 0000 8D9910011001 41110100010011001 E8 B6 99 3 不知大家看懂了没有,其实不懂也无所谓,反正又不用自己算,程式可以完全代劳。 以UTF8格式储存的文件档首标识为EF BB BF。 效率 从上述编码原理中得出的结论是: 1.每个英文字母、数字所占的空间为1 Byte; 2.泛欧语系、斯拉夫语字母占2 Bytes; 3.汉字占3 Bytes。 由此可见UTF8对英文来说是个非常诱人的方案,但对中文来说则不太合算,无论用ANSI还是Unicode/UCS2来编码都只用2 Bytes,但用UTF8则需要3 Bytes。 以下是一些统计资料,显示用UTF8来储存文件每个字符所需的平均字节: 1.拉丁语系平均用1.1 Bytes; 2.希腊文、俄文、阿拉伯文和希伯莱文平均用1.7 Bytes; 3.其他大部份文字如中文、日文、韩文、Hindi(北印度语)用约3 Bytes; 4.用超过4 Bytes的都是些非常少用的文字符号。 Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。1990年开始研发,1994年正式公布。随着计算机工作能力的增强,Unicode也在面世以来的十多年里得到普及。 Unicode是基于通用字符集(Universal Character Set)的标准来发展,并且同时也以书本的形式(The Unicode Standard,目

文档评论(0)

erterye + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档