搜索本站 搜索互联网 搜索
加入收藏
设为首页

为什么要采用UTF-8编码,UTF-8编码有什么好处?

正文字体: 2007-7-14 作者:佚名 来源:不详
什么是UTF8
UTF8并不算是一种电脑编码,而是一种储存和传送的格式,如前所述,每个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 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
0400 0000-7FFF FFFF 1111110x 10xxxxxx ... 10xxxxxx

编码步骤:
1) 首先确定需要多少个8bits(octets)
2) 按照上述模板填充每个octets的高位bits
3) 把字符的bits填充至x中,字符顺序:低位→高位,UTF8顺序:最后一个octet的最末位x→第一个octet最高位x
4) 解码的原理一样。

实例:

UCS-4 UTF-8
HEX BIN Bytes BIN HEX Bytes
0000 000A 00001010 4 00001010 0A 1
0000 0099 10011001 4 11000010 10011001 C2 99 2
0000 8D99 10001101 10011001 4 11101000 10110110 10011001 E8 B6 99 3

不知大家看懂了没有,其实不懂也无所谓,反正又不用自己算,程式可以完全代劳。

以UTF8格式储存的文件档首标识为EF BB BF。


效率

从上述编码原理中得出的结论是:
1.每个英文字母、数字所占的空间为1 Byte;
2.泛欧语系、斯拉夫语字母占2 Bytes;
3.汉字占3 Bytes。

UTF8的好处:

数据表现:网页可以显示任何语言和文字,只要你的操作系统支持unicode,还有相应的字体,Linux下系统编码为utf8的话,可以解决很多无谓的中文问题,比如mp3播放器或者gtk2.
数据交换:无需那些gb2312和big5之间的转换程序了.
php里著名的"許功蓋"问题,smarty的问题,都可以很好的解决,这方面的以后扩展来介绍:



UTF8的坏处:

用的中文网站还不多,不利于数据交流.
汉字为三个字符,有时varchar不大够用.

不过总体来说还是利大于弊,所以一直用吧4 Bytes(header)

由此可见直接以Unicode/UCS的原始形式来储存是一种极大的浪费,而且也不利于互联网的传输(中文稍为合算一点^_^)。
人气
我要发言
我顶!
我踩!
将本文加入收藏夹
返回本栏目首页
返回首页
正文字体: 上一篇:
下一篇:
留言载入中...请稍后...
最多500个字符
  • 本站所有提供的素材全部经过打开测试和精心挑选,仅供大家学习使用,请不要用于商业用途。如需作商业用途,请与原作者联系。
  • 网友提交的评论和留言属网友个人意见,与本网站立场无关。
  • 请尊重网上道德,遵守中华人民共和国各项有关法律法规。
  • 以上资料除注明为本站原创以外,均为各方收集或网友推荐所得。以共享、研究为目的,不存在任何商业考虑。
  • 目前有些文章未注明作者或出处或标注错误,并非不尊重作者及出处网站,而是因为有些资料来源的不规范。如果有了解作者或出处的朋友,请告知,本网站将立即更正注明,并公开向作者或出处单位道歉。
  • 被摘录的对象如有异议,请与本站联系,联系方式见页尾,本站确认后将立即撤下。
  • 本站原创的内容如需转载需获得本站授权。
天气日历节庆
站内精确搜索
闽ICP备07074275号 CopyRight b2fm.com.cn 投稿信箱:gtxj45h1@yeah.net(请注明投稿) 研讨群:13601519
请使用1024*768或更大分辨率,IE6.0以上,FireFox2.0以上,Opera9.0以上,NetScape7.0以上,Safari3.0以上版本的浏览器浏览本站
每天5:00-8:00为服务器维护时间,在此期间网站可能无法访问,对您造成的不便,我们深感抱歉 [举报不良信息]
Valid XHTML 1.1 Transitional Valid CSS!
Powered By E-Dragon CMS 1.0 Beta