·汉化新世纪 ·汉化新世纪论坛 ·百家争鸣 ·论坛集萃 ·汉化问答 ·软件介绍
文章首页 >> 汉化教学 >> 特殊汉化 >> 如何汉化RSC资源中的ASCII码    Creative Commons License,创作共用协议(中文版)  署名 非商业性使用 禁止演绎

如何汉化RSC资源中的ASCII码

作者: redzest 来源:WDA智能手机论坛 时间:2006-04-23 点击:11285

1、关于S60软件或游戏的汉化


  S60软件或游戏都使用基本相同的结构框架,汉化它们,其实就是找出文本资源文件并替换成中文的过程。只需要把在手机上看到的所有英文字符,在程序的文件中查找并全部替换成中文字符,即可实现完美汉化。


2、S60软件的文本资源

  S60软件的文本资源一般为.rsc文件,这是S60软件设计框架中的标准资源文件。

  在这个资源文件中,比较常见的文本字符为Unicode编码,即不论英文字符、中文字符都占两个字节。相对于ASCII码来说,汉化的难度更小一些,因为英文的Unicode的“OK”是两个字符占四个字节,中文的“确定”也是两个字符占四个字节,直接替换即可。相信大家做汉化已经接触过很多了,这里不再赘述了。

  但是现在越来越多的例外,许多英文软件已经冲破Unicode编码的限制,开始使用ASCII码资源。对于英文程序开发员来说,这是完全可以理解的,因为本身英文字符只有26个,加上其它标点等字符,最多也就一百多个字符,所以英文的字体文件比中文字体文件要小得多。要让英文字符无缘无故地占用两个字节,在他们看来的确是非常大的浪费。所以ASCII码资源文件的软件也不断开始涌现。

  下面将会以我汉化的SlideShow来具体地分析ASCII码资源的汉化。


3、S60软件.rsc文件中的ASCII码资源的汉化

A、ASCII码资源特点。
我们用UnMakeSIS解开SlideShow的安装文件,得到SlideShow.rsc资源文件。

用HexWorkShop打开SlideShow.rsc文件,我们看到其资源不是Unicode,而是AscII码。比如手机端菜单的第一项“Run SlideShow”,显示出来不再是“R.u.n. .S.l.i.d.e.S.h.o.w.”这样了。

分析其特色,你会发现每一个字串前面还有两个指针,正如这个“Run SlideShow”的前面是:0D0D(如图1)


这两个0D的作用是用来指示字串的长度及字符数的,是16进制的计数方式,前面一个0D代表这个字串有13个有效字符,后面的0D代表这个字串的总长度是13个字符。

对于英文字符来说,有效字符和字串长度是一样的,但对于中文字符来说,就不同了,因为中文一个字符要占用两个字节,所以如果汉化后显示成“开始演示”,那么其有效字符数是04,字串长度就应该是08了。

B、ASCII码资源的汉化
好了,现在我们开始汉化这个字串。那么中文显示是用的什么编码呢?

开始的时候,我用中文的ASCII码来替换,发现显示出来依然是乱码。后面我试过许多种编码,显示出来都是乱码,最后我想到,也许短信使用的编码是可以兼容显示的,经过测试,果然可以,那个兴奋……!!!也就是说,汉化这种资源,要用中文的BigEndUni编码。

C、长度不足的ASCII码资源的汉化。
大家看到第二个字串:Help,其代码是48656C70 (下图中粉色的部份)


    如果汉化成中文,BigEndUni代码加上0F...E0引用符一起就是:0F5E2E52A9E0

    这样长度不够写,总不能把Help汉化成“帮”吧?这样需要从其它字串处“剪”一点空间过来。

    我们汉化上面的Run SlideShow的时候,不是多了三个字符吗?还补了三个空格,真是“朱门酒肉臭,路有冻死骨”啊!

    (但中文编码的使用是需要再加上标识符的,这个标识符是以0F开头,以E0结尾,大家记住就好。)

    但由于汉字占用的字节数比英文字符多,所以前面的长度指针也要修改,还以上面的字符为例,修改的具体情况如下:


    Run SlideShow   0D0D52756E20536C69646573686F77
    开始演示      070D0F5F0059CB6F14793AE0202020


    说一说这一段070D0F5F0059CB6F14793AE0202020代码是怎么来的:

    ①070D是字符长度指针,07代表这个字串总共有7个字符,0D代表字串的总长度是13

    ②0F5F0059CB6F14793AE0是“开始演示”的代码。其中前面的0F是引导符,5F0059CB6F14793A是“开始演示”的BigEndUni编码,最后的E0是结束符。

    ③后面的202020是因为字符总长度不够,补了三位空格。


现在,从Run SlideShow处剪切两个字符过去Help这边,那么Help就够写了。只是剪切后,Run SlideShow的字符长度变短,Help的字符长度变长,那么这两者的字符长度指针都要修改,最后的结果是(见下图):


    
    Run SlideShow   0D0D52756E20536C69646573686F77
    开始演示      050B0F5F0059CB6F14793AE020


    Help        040448656C70
    帮助        02060F5E2E52A9E0


    从Run SlideShow处剪出两个到Help处,汉化后,有四个汉字一个空格,所以有效字符个数是五个,字符长度减少两个字节变成0B,而Help汉化后,有两个汉字,所有有效字符个数两个,字符长度增加两个字节变成06。



    
  小结:
    对于这种ASCII码的汉化的繁琐相信大家又有了新的认识了,因为有许多字串的长度是不够的,比如OK,EXIT等等,都需要移花接木之术方可完美汉化,一般来说,像Cancel这种六个字节长度的英文,才能保证刚好汉化成两个中文字符“取消”,大家需要多多剪切才能完成,祝大家汉化一路顺风!

汉化新世纪 责任编辑: 乾 .:|:. 标签(Tag): RSC ASCII 手机

·上一篇: 教你用HexWorkShop完美汉化U码软件游戏 ·下一篇: 软件资源类型

· 版权申明: 本文引自《WDA智能手机论坛》,如有版权疑问请及时联系本站,以便本站处理。

· 转载申明: 本文引自《WDA智能手机论坛》[ 作者: redzest],如需转载请直接联系原始作者,并请注明原始出处。

相关文章                                                                                发表评论 打印此文 关闭窗口

| 设为首页 | 加入收藏 | 联系我们 | 友情链接
Creative Commons License,创作共用协议(中文版)  署名 非商业性使用 禁止演绎
本站内容,除转载或版权特别申明的内容外,皆遵守 创造共用协议中文版之“署名-非商业性使用-禁止演绎 2.5 中国大陆”条款
This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 2.5 China License.
本网站内容源自汉化新世纪论坛的摘录和汉化新世纪成员的原创文章。
凡汉化新世纪论坛的文字皆默认为汉化新世纪与原作者共同拥有并授权发布。
如对本站发布文章有所异议请来信告知,我们将及时删除。
凡商业摘录本站文字请先与我们联系,本站将保留非授权商业发布的追究权利。
凡非商业摘录本站文字请明显注明出处和原作者,并不得改动,凡改动必先征求原作者同意。
苏ICP备05002283号