• 字体
  • 字体家族
  • 字体公司
  • 字体设计师
  • 字体样张
  • 资讯
  • 视频
字客网>资讯>详情

一种对汉字更环保的 Unicode 编码方案

时间:2008-12-25 01:11:44| 标准|浏览:0|作者:fontke
导语Windows 早期默认支持的中文编码方案是 GBK,它是对早期 GB2312 的一个扩展。后来国家又发布了 GB18030 标准

Windows 早期默认支持的中文编码方案是 GBK,它是对早期 GB2312 的一个扩展。后来国家又发布了 GB18030 标准,扩展了 GBK,增加了一些 Unicode 里才有的汉字,这样就可以做到和 Unicode 字符集做完全的映射了。而后来 Unicode 逐渐成为标准,几乎所谓的系统处理多国语言时,都把 Unicode 做为默认设置了。Unicode 有两套编码集,UCS-2 和 UCS-4,后者是对前者的补充,虽说字面说写的 4,但实际上只用到了 3 个字节不到。

Windows 的内部其实是用的 UCS-2 标准,并用 UTF-16 来实现。而非 Windows 系统大多采用了 UTF-8。UTF-8 在很多情况下更有优势,首先它不需要考虑大头小头的问题,其次,数据损坏的时候,不会有半个汉字的问题。并且 UTF-8 可以完整的表达 UCS-4 而不需要有额外的付出。

前几年,在 Windows 程序员过度期,经过一些痛苦的实践,我终于意识到,VC 提倡的所谓为软件维护 UNICODE 和 非 UNICODE 两个版本是件巨傻 X 的事情。之后,我们的程序再也不为内码分版本了,一律采用 UTF-8。

不过,UTF-8 的设计明显是用英文为主的西方人搞出来的东西。对于中文一点都不环保。所有汉字和中文标点都需要 3 个字节才能表达。而少量欧洲字母可以用 2 字节表达,英文的 ASCII 符号则可以只用单字节。

我不指责这个设计,因为兼容 ASCII 是 UTF-8 的最大优势。其它,则是 KISS 原则下的产物。

不过,若是内部使用的话,如果你介意这 1/3 的储存空间的浪费的话,是不是有改进的余地呢?下面我们来讨论这个问题。

观 察 Unicode 的码表我们可以发现,实际大部分汉字是从 U+4E00 开始编码的,到 U+9FFF 结束。U+2000 到 U+3FFF 则有一些汉字标点符号等。稍加设计,我们可以定义出一种编码方案,对 UCS-2 或 UCS-4 做编码,让汉字可以用双字节表达,并保持对 ASCII 的兼容(U+0000 到 U+007F)段依然使用单字节。

作为牺牲,那些欧洲字母和韩文,就委屈到 3 字节甚至更长的编码了。

简述一下对 UCS-2 的编码方案(UCS-4 只需要做点小扩展)。

使用 大头方案(Big-endian)

ASCII 部分 U+0000 到 U+007F 保留,用单字节 0x00 ~ 0x7f 表达。

对于 U+2000 到 U+9FFF,除掉其中的 U+2F00 到 U+2FFF 部分(目前这个部分为空),做一个简单变换:即加上 0x6000,把编码转换到 0x8000 到 0xffff 部分。做双字节编码。由于 U+2F00 到 U+2FFFF 被除外(如果是 UCS-4 可以去除 U+2E00 到 U+2FFF),所以 0x9f 将成为一个 magic number。

对于其它部分:U+0080 到 U+1FFF,U+2F00 到 U+2FFF,U+A000 到 U+FFFF,一律编码到第 2 3 字节。并将第一字节直接设为 0x9F。

这样,解码成 UCS-2 的算法非常简单(甚至不比 UTF-8 解码更复杂)。缺点是,缺乏 UTF-8 的容错性,有半个汉字的隐患。

这样的编码什么时候会有用?

网络传输时,对字符串做这样的编码(写一个 UTF-8 到这个特定编码方案的互转程序可以在 10 行 C 代码内完成,并非常高效),可以有效减少传输的数据。

如果需要做大规模的数据储存,比如搜索引擎抓取的网页时,可以节省不少储存空间。

至于源代码,和配置文件中,还是推荐使用 UTF-8,毕竟编辑器的支持更重要。

作者:云风

0
更多一种对汉字更环保的 Unicode 编码方案敬请关注字客网!
一种对汉字更环保的 Unicode 编码方案 网友点评
游客:文明上网,理性发言。 看不清?换一张
一种对汉字更环保的 Unicode 编码方案 最新评论
暂无相关评论
精彩点评
  • 游客评论免费商用中文字体有哪些?字体资讯

    新蒂字体 授权使用: 无需备案免费使用的情况: 在个人电脑上安装、打印个人文档、个人网站、博客、微博配图 需要备案免费使用的情况: 设计有可能商用的稿件(在商用时购买商业授权)、用于免费提供给他人的印刷品(印量在500份以内,且无需获得印刷品行政许可)的情况、用作没有品牌冠名的公益广告、用作完全免费(不能含有收费项目)的软件及网络服务。 需要购买个人授权的情况: 个人网店的装饰、个体商...
  • 游客评论免费商用中文字体有哪些?字体资讯

    太有用了,感谢作者
  • 天天刺绣评论耗时2年他重新设计34省市图形字体字体资讯

    设计的好棒!漂亮!稀饭!
  • Jaja评论40款高质量英文设计字体字体资讯

    怎么下载啊~
  • 简MEN评论七招打造有逼格的字体字体资讯

    有一款想要的字体,就是下来屯
  • chill评论40款高质量英文设计字体字体资讯

    地址呢?