- 1、本文档共7页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
如何汉化软件中的字符串
第一篇:关于ASCII字符串 一、ASCII字符串的定义和简介 ASCII字符串--在汉化界里,把在一个程序中不能使用资源方式来提取的,但是在运行时会显示出来的提示信息称为ASCII字符串(一般称为ASCII码)。在汉化软件过程中,ASCII字符串的汉化一直是最麻烦和最容易出错的地方,这是由于ASCII字符串一般都分布在程序中的代码段或数据段里,不属于资源部分,不能使用标准的资源提取工具提取出来。由于程序执行代码也在代码段里,并且字符串往往并不是集中固定在某一个地方,所以很难分辨是否为需要翻译的字符串。 ASCII字符串一般划分为C语言字符串和Pascal语言字符串: 1、C语言字符串指的是在字符串前后都有一个ASCII码为“00”的字符来与其它代码区分开来(图1): 如:00 69 73 6B 2E 00(disk) 。C语言字符串主要出现在程序的数据段部分。一般用C语言编写的程序(注:典型的是用VC++来编写的程序)最多C语言字符串。由于C语字符串在数据段里往往会集中一处,所以查找起来比较方便。 2、Pascal语言字符串只有用Pascal语言来编写的程序才有(注:Delphi就是使用Object Pascal语言)。是指字符串后面不但有至少一个ASCII值为“00”的字符分开,且在字符串第一个字符前三个字符都是 00,在前第四个字符是该字符串的长度标识符,前第五、六、七,八个字符是ASCII码值为“FF”的字符,如:FF FF FF FF 02 00 00 00 C4 E3(图2)。 有这么多的特点,判断是否为ASCII字符串比起C语言字符串容易多了,不过由于Pascal语字符串分布在整个代码段里,所以查找起来就比较难了。 二、汉化时遇到的问题 由于ASCII字符串在代码段或数据段中,所以汉化ASCII字符串有其的特殊性: 一、要保证程序的运行,就不能增加程序文件的大小,也就是不能直接增加ASCII字符串的长度,否则程序就会出错而不能正常运行。 二、难以判断是否为可翻译或需要翻译的字符串。 鉴于ASCII字符串的特殊性,所以目前汉化ASCII字符串时,绝大多数都是使用十六进制编辑器来手动修改,不但汉化需要的时间长,并且很容易出错,一个字--烦! 三、ASCII字符串提取工具的介绍和分析 难道就没有一个程序可以用来自动提取ASCII码吗?当然有了,但是目前汉化界的所有ASCII码提取工具都是基于一种提取方法,使用的判断条件大都是:字符串全是字母或数字,字符串前后都有值为00的字符,字符串要有一定的长度,高级一点的提取工具会设置不提取包含某些字符的字符串(这样可以除去一部份不需要翻译的字符,如WIN32API函数,但有时反而不提取不到应该提取的 ASCII字符串),更高级的提取工具可以判断字符串是否为英文单词,并且可以设置要提取的字符串中包含英文单词的数量,提取的范围固定在代码段和数据段里(这样提取出来的字符相对准确,可以除去WIN32API函数以及一些代码。是所有判断方法中准确性最高的一种,但是编写程序的难度大,提取速度慢,因为要有一个英文库,所以此类的提取工具很少)。在提取时,如果满足所有提取条件的字符串,就提取出来。虽然这样,但结果还是只有很少的汉化高手使用,原因是提取效果还是差强人意。以及最重要的是不能增加字符串长度。 四、如何增加ASCII字符串的长度 要是按修改资源的方法来增加字符串长度是不行的,因为那样虽然增加了字符串的长度,但是文件长度也增加了,也就是代码或数据的位置改变了。那么,程序运行时就会产手错误,而使汉化告败。可见,增加字符串的长度,是首先要保证程序可以正常运行,所以不修改程序的长度,而是修在程序内部利用一些空余的位置来放罢新增的字符,由于C语言字符串和Pascal语言字符串不同,所以把增加字符串的技巧分为四章,第一章写的一般情况下增加C语言字符串的长度,第二章是写在比较特殊的情况下使用的技巧,第三章是增加Pascal语言字符串的长度的技巧,第四章则是在比较特殊的情况下使用的方法,在看完四章后,相信你汉化软件时,对 ASCII字符串一定能更完美地汉化,而不是以前的“是”或“否”了。 五、要了解的知识 在这里,我将介绍一下增加ASCII字符串长度的主要原理,以及将使用一个辅助计算的小工具:代码转达换器。在WIN32程序中,显示一个提示信息都是通过调用 API来完成的,调用的时候,会先把字符串在内存中的偏移地址移到一个寄存器中,然后调用API函数,而API函数根据偏移地址找到字符串在内存中的位置。我们在调试一个程序时就可看到(图3): 这是用在调试DELPHI程序时的一个函数MessageDlg,由上面我们可以看到,字符串在内存中的地址是固定的,其地址在编译时就已经以代码的形式存放到文件中,那么我们可不
您可能关注的文档
最近下载
- 我国散光矫正型人工晶状体临床应用专家共识.docx
- 科研伦理与学术规范.docx VIP
- 【教学评一体化】第三单元 赏山川日月,悟忧乐情怀 整体公开课一等奖创新教学设计-【大单元教学】统编版语文九年级上册名师备课系列.docx VIP
- 缅怀先烈精神-传承红色基因课件.pptx VIP
- 1.1 同底数幂的乘法 双减分层作业设计样例 2021—2022学年北师大版数学七年级下册 .docx VIP
- 朱良春杂病廉验特色发挥.docx
- 绘本《我妈妈》教学设计.docx
- 人教版(2024)英语七年级上册全册教案.DOCX VIP
- 在线网课知慧《音乐艺术概论》课后章节测试答案.docx
- 2024年中煤集团西南分公司招聘笔试参考题库附带答案详解.pdf
文档评论(0)