这几天,都是在搞一些程序,大都是QT跨平台设计的程序(因为 QT 库是为跨平台编译设计的,所以似乎并不调用任何 Win API 函数),这些程序通常无法显示汉字。有些汉化者修改了程序,自己补写了对符串的处理。然而有很多程序似乎无法这样修改。我后来跟踪了程序对字符的处理后,发现只须改动一个地方,就可让程序显示出Utf-8编码的汉字,而无须别外添加汇编代码。
然而,Utf-8编码比较特殊,ASCII则占一个符号,而中文占三个字符。(但大多QT程序中,后面都留有多余的0字节,因此大部分程序还是有足够的空间写入汉化后的字符串的。)使用Ultraedit来汉化,工作量大,而且很容易出错。毕竟,生成的Utf-8编码显示太长了。因此也就萌生了自己编写一个对程序直接写入Utf-8编码汉字的程序。
思路大抵是这样:
1、修改后的文本文件,必须是以三行为一个单位。格如式下:
'第一行为空
124345:File ‘第二行以:隔开,前面的是地址,后面的是英文字符串
文件 '第三行就是要汉化的中文字符串
…………………… '以此类推
(注:上面的文件格式,可以使用Locplus程序来获取,相信这个程序很多人都有用过,我没有自己编写获取字符串的程序,一方面是自己功力不行,另一方面是想偷懒,直接用现成的。Locplus可以很方便的获取程序中的ASCII字符串,生成的文本格式如上,因此我直接调用了这个文件)
2、对于要写入的字符串的长度,自动进行判断。
先搜索指定地址开始,到最后一个0字符为止,计算允许写入的最多的长度值。
再判断转化成Utf-8编码后字符串的长度,如果少于允许的长度则写入,否则把当前地址及英文字符串输出到Log.txt中,方便过后查阅。
3、程序自动转换英文和中文的Utf-8,并转换成二进制,然后直接写入到程序中,从而达到汉化的结果。
程序刚刚完成,还没有进行系统的测试与优化。目前只是测试版本,提供测试,看看有什么需要改进的地方。
在使用中请注意下面的问题:
1、程序没有提供备份功能,请自己在使用时先备份要汉化的源程序。
2、程序没有编写捕捉功能,如文件被占用,或者其它错误,因此使用时要汉化的程序要有权限读写。
3、Utf-8编码,是自己编写的函数转化,如有必要,过后再添加查询Utf-8编码的显示功能。
4、对于无法写入的字符串,自己想办法解决。要么缩短汉字,要么使用乾坤大挪移来修改。
5、程序没有优化,或许运行的速度会慢些。在要汉化的文本文件中,还是把那些不汉化的内容去删除,会比较快的。
下面的则是程序。(程序用VB编写,过后再搞成Powerbasic来编写,这样就不需要VB讨厌的Dll支持了)
写入Utf-8编码.rar (554 K) 下载次数:376 这个是使用该程序汉化的效果:
[ 此帖被寒秋在2010-09-15 22:10重新编辑 ]