2007年1月26日星期五

智能ABC之后

Vista拿掉了智能ABC,很多人都不满意,包括我在内。于是网上开始流传着“Vista版智能ABC”,以及关闭IE7保护模式的方法。可排除了个人情绪之后,我也只能说,这怪不了微软。

在微软主页上我翻到了一条旧闻,标题是《国家有关部门与微软签署Windows 95™中文版项目标准规划合作协议书》。其中有这么两句:“Windows 95™中文版将选择全国信息技术标准化委员会推荐的标准规划化中文字和规划化中文输入法。该委员会将根据中国政府有关部门的规定,以合理的方式和价格向微软进行技术转让。”

大家都知道,Win95中除了拼音、区位之类几乎没什么实用性的输入法外,主要附带的输入法就是智能ABC和郑码两种。前者的开发者为北京大学朱守涛,后者的版权则属于北京中易电子公司。两者与信标委应该都不存在上下级关系,“该委员会……向微软进行技术转让”不知从何谈起,想来无非也就是“政府协调”吧。

这桩生意大概不会为朱守涛和中易公司带来多大收益,“合理的方式”肯定不会是按拷贝计算版权金。至于一次性技术转让费能有多少,想想甲方是谁也知道不会多。而且相比中易公司,朱守涛先生在这桩买卖里所处的位置更为不利。

汉语拼音不可能申请专利,而郑码显然是有专利的。但像v键前导临时输入英文字符,i键前导输入高频字和大写数字一类的功能,专利局还是有可能会受理的。可朱守涛先生有没有试图申请?还是微软连这一步也事先想到了,已经获得了专利授权?总之以结果来看,微软想踢开中易做出一个“微软郑码”并不可能,但微软拼音中出现一个“智能ABC模式”已经成为了现实。

说到这里,似乎我是在为智能ABC叫屈,其实并非如此。要知道,一众扇子对于智能ABC的依赖,除了附加功能和输入风格外,最重要的就是字词排序。而由第三方实现一个智能ABC的完全克隆,显然没有可能。只要智能ABC继续开发,凭借多年来预装地位所带来的用户惯性,即使Vista拿掉智能ABC,保有相当市场份额也不是难事。实际上并不是用户放弃了智能ABC,而是智能ABC放弃了自己。

无法删除错误的自造词,自造词达到上限造成出错,v模式bug引起软件不正常退出,一直以来智能ABC都有些不大不小的毛病。随着Windows的升级,这些毛病不但没有修正,反而还越来越多。直至Win2k中那种既非宋体又非仿宋体的候选字字体出现,我甚至有点怀疑,这是故意的。

到WinXP推出,包括难看的字体在内,问题依旧还摆在那里。这些时间智能ABC的开发者都干什么去了?办了家叫阳宁的公司,卖了份授权给中科红旗和华镭,还开发了一个“智能ABC袖珍版”——只是没见到有什么手机、PDA、机顶盒用过。

一直到2004年11月7日,Windows的智能ABC才更新到了v5.22版。字体总算改过来了,而且终于可以输入那个著名的“镕”字了。不但如此,像“嗯”、“瓩”这一类字,也可以按照正确的读音进行输入,算是一个值得骄傲的新特性。然而原本存在的某些问题依旧存在,还引入了新的问题——cmd.exe窗口中候选字序列消失了。并且这是一个要卖38元的共享版本,安装包中还附送了两个俗称流氓软件的插件。

要不要卖钱是软件作者自己有权决定的事,可安装包里还捆了别的东西,这种行为也太小气点了吧。原本正常使用的功能突然消失,是测试问题,还是cmd.exe高手向,没几个人用?我无语。

从1994年的Windows 3.2,到2003年的Windows Server 2003,智能ABC作为Windows的预装输入法有近十年时间。我还曾经寄望于Vista中的智能ABC,可从那充满死链的官网来看,这个输入法恐怕很难再有下一个版本了。说再见的时候到了么,我有一种被甩掉的感觉。

煽情一把,留个纪念:

Windows 3.2
v3.10.147
Windows 98SE
v4.00.950
Windows 2000
v5.00.2190.1
Windows XP
v5.1.2600.0
Windows Server 2003
v5.2.3790.0
znABC v5.22a
v5.22.216

2006年12月25日星期一

Why UTF-8 Sucks

Linux应该用哪一种locale,这还用得着问么,当然是UTF-8。如果在充满愤青的开源论坛上对此提出异议,那你就等着被拍吧。不过我还是有些不同的意见,而且标题为“Why XXX Sucks”的文章看多了,感觉这个句式挺爽,所以今天试着说说,为什么UTF-8也sucks。

首先,使用UTF-8保存文本,会使字节数膨胀。具体增加值根据文本类型会有所不同,对于中文用户而言,UTF-8文件尺寸约为GBK内码的1.5倍。在存储成本越来越低的今天,这的确有点鸡蛋里边挑骨头的味道,所以放在第一个说。

其次,排序方法不符合用户习惯。虽然我没有找到可靠的资料说明Unicode采用了怎样的编码顺序,但翻阅Unicode的码表可以看出,应该是主要采用了笔画序。如果你也像我一样有很多mp3文件,以演唱者为目录名分类存放,你就知道那有多痛苦了。类似的问题其实很容易遇到,例如通讯录中的联系人名单等。

第三,存在不定宽度字符。有一些字符,比如欧元符号、摄氏度符号等,在各种编码中都有定义。传统上中日韩地区将这些字符表示为全宽字符,而其他地区则将这些字符表示为半宽字符。Unicode将这类字符称为Ambiguous,并有文档说明如何处理这些字符。

Ambiguous字符在拉丁语系用户眼里,跟半宽字符是一样的东西,而且还有些“特别的好处”,于是有意将一些文本中半宽字符转用Ambiguous字符表示。而这样的文本在CJK用户看来,就是一塌糊涂。Wordpress不经修改会出现标点符号错误,就是这个原因造成的。

上文提及的三个问题,除了第一个外,其实都有解决的办法。Linux的locale除了指定内码外,还包括语言相关的很多内容,如日期、时间、数字格式等,其中LC_COLLATE就与文字排序有关。不过打开/usr/share/i18n/locales/zh_CN(系统不同位置也可能不同)看看,中文并没有特别制订自己的排序方法,而是直接照搬了ISO14651,跟Unicode内码排序差不多。

至于第三个问题,纯属非CJK地区开发者只图自己方便搞出来的。用Ambiguous字符替换原始字符,不但看起来一样,而且还避免了诸如SQL注入、嵌入非法脚本等问题,简单方便。类似问题也存在于VIM中,VIM有一个参数ambiwidth,默认值为singe。如果将encoding设置为utf-8,并且不修改ambiwidth的设置,对中文引号等字符的描绘就会出问题。

Unicode是为了解决国际化信息交换和处理而出现的,其立志成为所有编码的超集,所以不可能照顾到所有国家和地区的用户习惯。

例如编码顺序的问题,1980年制定的GB2312将汉字分为常用汉字和次级汉字,常用汉字3755个,按照拼音辅以笔形顺序排列,次级汉字3008个,按笔画部首排序。读音依据的是普通话审音委员会发布的文件,而字形则有文化部和文字改革委员会负责。

而Unicode就不可能采用这样的排序方法了,同一个字中文和日文读音不同,甚至大陆和台湾的读音也不同。于是只好用笔画偏旁序,一种机械而折中的方案。

即使采用这种方法,编码制定过程中也大有可吵之处。经过不同国家和地区的使用及演变,一个字的字形可能产生一些细微的变化。是不一样就收,还是有所取舍?取舍时以大陆的中文为准,还是以台湾的中文为准?是听中文的,还是听日文的?这不仅是文化的冲突,还可能牵涉政治问题。

由此可以得出结论,Unicode虽然是一个好东西,但仅有Unicode显然是不够的。一些语言相关的细节问题,商业软件有厂家负责(如MS-SQL就有完备的语言和排序规则),其他的就只能靠政府和我们自己了。只要国内开源社区真的能有所发展,如Wordpress标点符号等类似问题自然可以得到解决。

最后回到开篇那个命题,现下Linux应该使用哪一个locale?我个人的意见是zh_CN.gbk。GBK貌似过时,但其实该标准包含的汉字几乎等同于ISO10646的BMP(Basic Multilingual Plane),日常使用应该足够。而拥有良好国际化支持的程序,例如GVIM、Firefox,并不会因为locale而失去了阅读和处理其他编码的能力。除此以外,Opera、WINE等国际化支持不好的程序,使用zh_CN.gbk也能避免的掉很多莫名其妙的问题。

2006年12月14日星期四

更新小k

我的手机是索爱的k750i,起码几天前还是。这个手机用了有一年多,虽然我也没有特别珍惜爱护,可对我来说意义其实蛮特别的。拿回来的时候软件版本是R1J002,过不多久就有新版本出来了。当时小k虽然已经被破解,但非官方的刷机是要收钱的。而我的CDA是102337/1,在官网上升级有可能被刷成英文机,所以一直没动过。

前几天突然想起,上网随便逛了一下,发现小k已经被完全破解了。有个叫Darkmen的乌克兰人完成了破解小k的最后一步,他发布了一个FAR的插件SEFP,通过该插件可以对小k的内部文件和存储器进行直接操作,完成刷机所必须的“闭合”。这不过是今年6月4号的事情,可这几个月来国内外手机论坛都蛮热闹的,有关小k刷机改机的内容非常多。

仔细看了看,虽然单纯升级系统的意义不大,不过有几个补丁还是挺吸引人的。例如修改标点符号的排列顺序,把中文标点提前;对方接电话的时候震一下手机,可以提醒你;长按拍照键可以打开和关闭补光灯,当电筒用;去掉未签名java程序的警告等等。

为了这些功能,少不得又是一番折腾。升级的过程中了解到了不少东西,譬如说现在的移动QQ连视频都能用了,许多wap网站上还出现了色情小说之类的。最近正在进行3G测试,《经济观察报》也针对3G作了一期特稿,似乎3G马上就要来了的样子。就是不知道,什么时候手机上网才能便宜到实用的程度。

远的且不去想他,如今我的小k系统版本变成了R1DB001,型号也变成了k750c,涂上一笔留个纪念。