shaokui123 发表于 2024-5-23 17:01

汉化字符大于原始长度(字符是主程序读取资源文件)

如图一个程序汉化,

这个地方显示的信息是主程序exe读取别的目录一个文件里的信息显示的,也就是需要汉化的地方不在主程序里

原始位置好像就是固定读取5字节,因为我修改12345可以改变,123456789还是显示12345,后面不显示。

经过测试,把对应的汉字 深度 转化为UTF-8的16进制编码进去可以显示汉字
但是在UTF-8状态下一个汉字占用3字节,俩汉字就是6字节了
所以导致修改后只显示一个深字

旁边的zscale正好6个字节,替换试试能完整显示

想了很多办法都没法解决
如果资源在主程序里或者可以尝试移位等方法操作。

但是有个前辈很多年以前汉化过这个程序有截图实现了汉字完整显示,只是资源失效无法下载学习了

所以请教高手这种情况如何解决,谢谢了。

lies2014 发表于 2024-5-23 17:43

文本显示不全可能有两种原因,一是文本标签限制了显示长度,二是读取字符串时限制了长度,你这种情形显然不是第一种
我们把目光定位到读取字符串上,字符串会有长度信息和不带长度信息两种,前者根据长度信息读取相应位数的字符串,后者遇到0才停止读取
后者不会出现读取不完整的情况,你的有可能是前者的情形,再看看字符串之前4个字节,“05”这个数字正好是字符串的长度,把它改成“06”试试
如果上面改后还是不行,那就有可能是程序本身限制了,在字符串上下个断点,看看程序是怎么处理的就明白了,这样的分析需要有一点汇编知识

shaokui123 发表于 2024-6-4 16:03

本帖最后由 shaokui123 于 2024-6-4 16:06 编辑

lies2014 发表于 2024-5-23 17:43
文本显示不全可能有两种原因,一是文本标签限制了显示长度,二是读取字符串时限制了长度,你这种情形显然不 ...
大佬你好,之前问题得到你的帮助,大部分内容都汉化了
但是现在遇到这个字串搞不定了,具体如下

这个需要汉化的字串open ,是在这个文件里修改的,这个文件里能搜索到两个,为方便区分,我改成了1pen

文件在这个文件夹里


打开程序,注意勾选窗口化,否则全屏了

点击这个按钮

这是需要汉化的按钮


hex打开是这样的,和别的没有什么不同,前面04是字符位数,后面是内容



但是按照之前方法比如要修改成别的字符,如图,还是显示原来的内容


就是这一处有问题,别的地方都汉化修改ok了,大佬有时间帮忙看看,谢谢

文件地址:https://www.123pan.com/s/rBk9-nY8Wv.html

shaokui123 发表于 2024-5-23 17:01

程序有点大,如果哪位有时间测试我上传网盘,谢谢

wszjf 发表于 2024-5-23 17:21

如果是非标字符的话,建议用非标宏试试

kof888 发表于 2024-5-23 18:56

调试一下看看这里是怎么读取的,如果固定是读5个字节,改一下就可以了。

shaokui123 发表于 2024-5-23 19:40

lies2014 发表于 2024-5-23 17:43
文本显示不全可能有两种原因,一是文本标签限制了显示长度,二是读取字符串时限制了长度,你这种情形显然不 ...

感谢热心回复,有问题还是不能死扛着,放出来集思广益很快就解决了。
老天保佑是最简单的那种
把05改成06就全显示出来了
要是别的话可能还得头疼

Yukeer666 发表于 2024-5-23 21:56

谢谢,我刚好也在为汉子字符限制发愁

LightSylcanus 发表于 2024-5-23 22:31

把需要汉化的地址偏移到空白地方
提示 Athena-A

pdanny 发表于 2024-5-23 23:06

好问题同求解

wszjf 发表于 2024-5-24 07:50

shaokui123 发表于 2024-5-23 19:40
感谢热心回复,有问题还是不能死扛着,放出来集思广益很快就解决了。
老天保佑是最简单的那种
把05改成 ...

再提示一下,如果是非标字符的话,建议用非标宏试试,不用手动05改成06
页: [1] 2 3
查看完整版本: 汉化字符大于原始长度(字符是主程序读取资源文件)