您现在的位置: 雨哲在线 >> 雨缘博客 >> 站长日志 >> 查看日志内容
〖        ★★★〗〖隐藏侧边栏

动易全站编码转换为UTF-8[测试中]

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) 解码的原理一样。

实例:(留意每个bit的颜色,粗体字为模板内容)

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对英文来说是个非常诱人的方案,但对中文来说则不太合算,无论用ANSI还是 Unicode/UCS2来编码都只用2 Bytes,但用UTF8则需要3 Bytes。

  以下是一些统计资料,显示用UTF8来储存文件每个字符所需的平均字节:
   1.拉丁语系平均用1.1 Bytes;
   2.希腊文、俄文、阿拉伯文和希伯莱文平均用1.7 Bytes;
   3.其他大部份文字如中文、日文、韩文、Hindi(北印度语)用约3 Bytes;
   4.用超过4 Bytes的都是些非常少用的文字符号。
来源:http://baike.baidu.com/view/742823.htm

信息交换用汉字编码字符集

信息交换用汉字编码字符集》是由我国国家标准总局1980年发布,1981年5月1日开始实施的一套国家标准,标准号是GB 2312—1980。它是计算机可以识别的编码,适用于汉字处理、汉字通信等系统之间的信息交换。基本集共收入汉字6763个和非汉字图形字符682个。整个字符集分成94个区,每区有94个位。每个区位上只有一个字符,因此可用所在的区和位来对汉字进行编码,称为区位码

这个码是唯一的,不会有重码字。把换算成十六进制的区位码加上2020H,就得到国标码。国标码加上8080H,就得到常用的计算机机内码。1995年又颁布了《汉字编码扩展规范》(GBK)。GBK与GB 2312—1980国家标准所对应的内码标准兼容,同时在字汇一级支持ISO/IEC10646—1和GB 13000—1的全部中、日、韩(CJK)汉字,共计20902字。信息交换用汉字编码字符集和汉字输入编码之间的关系是,根据不同的汉字输入方法,通过必要的设备向计算机输入汉字的编码,计算机接收之后,先转换成信息交换用汉字编码字符,这时计算机就可以识别并进行处理;汉字输出是先把机内码转成汉字编码,再发送到输出设备。

来源:http://baike.baidu.com/view/25492.htm

动易SW系统是aspCms中功能很强的内容管理系统。但由于一直以来仅支持Gb2312编码,有一定的局限性。昨天用了一天时间,把我现在用的全站系统从GB2312改成了UTF-8编码。

目前处于测试阶段,如给您的访问带来不便敬请谅解。访问您如有问题可与我们联系。

日志来源:雨#哲在线

所属分类: 站长日志     TagsUTF-8GB2312动易
文章来源: 本站原创     作者: 雨哲
引用地址: http://www.yz81.com/?ArticleID=3173

热门论点

评论数据载入中,请稍后……

本站与 UTF-8,GB2312,动易 相关的其他信息

  • >> [雨缘博客]雨哲致求助的动易网友们 [日期:2008-09-18 23:42:05]
  • >> [文章教程]关于百度地图页面出错的分析及解决方法 [日期:2008-09-11 02:40:42]
  • >> [服务支持]佛山市动易网络科技有限公司 [日期:2008-09-09 22:24:12]
  • >> [新闻信息]本站系统重要更新--采用UTF-8国际编码 [日期:2008-09-04 11:05:16]
  • >> [资源下载]雨哲最新韩国女性会员中心模板 [日期:2008-04-24 12:15:51]
  • >> [文章教程]将频道首页设为网站首页 [日期:2008-04-07 21:53:19]
  • >> [文章教程]雨哲防采集策略之列表篇 [日期:2008-04-05 13:15:40]
  • >> [文章教程]让SiteWeaver中通用搜索页面同样支持“自定义列表标签 [日期:2008-04-01 10:45:13]
  • >> [雨缘博客]真正的动易全站搜索(多模块搜索) [日期:2008-03-30 02:46:10]
  • >> [资源下载]雨哲修改聚合空间日志功能为站长日志 [日期:2008-01-26 23:21:54]
  • >> [文章教程]聚合空间改站长网站维护日志 [日期:2008-01-26 23:11:07]
  • >> [文章教程]SiteWeaver6.5中公用账户自动登陆简单修改 [日期:2008-01-26 22:49:21]
  • >> [资源下载]雨哲动易插件-将首页与自定义页面合并 [日期:2008-01-22 01:20:03]
  • >> [资源下载]雨哲插件系列-动易-仿PE07会员登陆页面 [日期:2008-01-21 10:08:21]
  • >> [新闻信息]雨哲插件总管正式发布 [日期:2008-01-04 01:45:06]
  • 讨论区

    评论数据载入中,请稍后……
    发表评论
    昵 称: 邮 箱:
    评 分:
    内 容:
    0/5000)
    插入链接
    验证码:

    雨哲提示:Alt+S快速发表