论坛风格切换切换到宽版
  • 32462阅读
  • 53回复

把Utf-8的编码写入到文件中 [复制链接]

上一主题 下一主题
离线寒秋
 

发帖
231
金钱
780
威望
78
只看楼主 倒序阅读 0 发表于: 2010-09-15
    这几天,都是在搞一些程序,大都是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重新编辑 ]
离线fx8332787

发帖
90
金钱
690
威望
69
只看该作者 1 发表于: 2010-09-16
用户被禁言,该主题自动屏蔽!
离线千岛掠影

发帖
329
金钱
1180
威望
118
只看该作者 2 发表于: 2010-09-16
怎么在我的机子上无法运行。如下图所示:
离线a2213572

发帖
718
金钱
6480
威望
648
只看该作者 3 发表于: 2010-09-17
我也是顯示執行錯誤.
离线MAX2006

发帖
160
金钱
470
威望
47
只看该作者 4 发表于: 2010-09-17
引用第3楼a2213572于2010-09-17 00:22发表的  :我也是顯示執行錯誤.

下载附件 COMDLG32.OCX 解压到 "写入Utf-8编码" 目录下即可.

PS:还不怎么会用,等 LZ 的进阶教程 ing...

COMDLG32.rar (55 K) 下载次数:101
乾:在论坛提问,如其他网友给予了关键,实质性的帮助;由此所成功汉化的作品;
或解决了一直困扰着你的难题;提倡在作品中适当位置,给予帮助人指名道姓的感谢.
欢迎访问:〓╰★╮〓-=绿色旗舰站=-〓╭★╯〓
离线千岛掠影

发帖
329
金钱
1180
威望
118
只看该作者 5 发表于: 2010-09-17
非常感谢楼上指点!
离线寒秋

发帖
231
金钱
780
威望
78
只看该作者 6 发表于: 2010-09-18
使用Powrbaisc来编写,使程序更加小巧,也不需要那么多的动态链接库的支持。
[attachment=28321]
增添了自动备份的功能,以及一些最基本的错误捕捉处理。
至于使用非常简单,只须先用Locplus搜索程序中的Ascii字符串,并生成Txt文本文件。
打开这个字符串文本文件,把汉化的英文改成中文。
然后使用这个程序就可以直接把Utf-8的编码写入到程序中,从而实现汉化的效果。
这是使用的界面:

增加了查询字符串的Utf-8编码的功能。
只须在第一个文本框里输入字符,单击显示就可以显示出字符串的Utf-8编码了。
写入Utf-8编码.rar (24 K) 下载次数:193
[ 此帖被寒秋在2010-09-18 11:31重新编辑 ]
离线flea033

发帖
122
金钱
580
威望
58
只看该作者 7 发表于: 2010-09-18
支持原创!
离线cntrump

发帖
287
金钱
2530
威望
253
只看该作者 8 发表于: 2010-09-18
还好看帖看到了最后,要不还下不到最后发布的程序,只能下VB的了。
离线gyl201

发帖
142
金钱
1050
威望
105
只看该作者 9 发表于: 2010-09-20
支持楼主的原创,希望楼主不断完善。
[ 此帖被gyl201在2010-09-20 10:03重新编辑 ]