设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2356|回复: 4
打印 上一主题 下一主题

[已经解决] 又遇到个Win32API.new的问题,不能加载中文路径

[复制链接]

Lv2.观梦者

梦石
0
星屑
480
在线时间
177 小时
注册时间
2006-10-3
帖子
618
跳转到指定楼层
1
发表于 2014-6-30 15:30:45 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 流川枫 于 2014-7-1 15:54 编辑

test=Win32API.new("D:\\测试\\test.dll","test",[],"v")
将出错

---------------------------
RMlinkSZK模版工程RMVX
---------------------------
脚本 'RMlinkSZK v2.1' 的第 107 行发生了 RuntimeError .

LoadLibrary: D:\测试\test.dll

---------------------------
确定   
---------------------------


但是test=Win32API.new("D:\\eng\\test.dll","test",[],"v")



奇特的是就算DLL是放在中文路径下,但只要在Win32API.new里不含有中文就能够加载,比如"..\\test.dll"一类的。

点评

证据就是乱码的汉字字数和原来的字数不匹配,这只存在于从UTF-8转宽字符。如果是宽字符转到多字符就算编码一般不至于改变汉字字数。  发表于 2014-6-30 16:11
然后再转换为什么都不重要,重要的是从UTF-8转到寬字符的时候是硬编码的日文编码。其实如果汉化的时候把这个地方改成CP_ACP活着中文编码就OK,残念  发表于 2014-6-30 16:06
OD跟踪发现LoadLibaryA里的中文乱码,也就是说RGSS没有用CP_ACP而是用日文编码将UTF-8转换为寬字符然后再转换为CP_ACP。  发表于 2014-6-30 15:57
在我初学RM的时候觉得脚本是高手的工具,等我学会了编程技术后才发现脚本原来是小孩子的玩具。

Lv2.观梦者

梦石
0
星屑
480
在线时间
177 小时
注册时间
2006-10-3
帖子
618
2
 楼主| 发表于 2014-6-30 20:40:33 | 显示全部楼层
kuerlulu 发表于 2014-6-30 19:45
LZ尝试着改rmxp的编码吧!

那还不容易,问题是我写的是通用的脚本而不是单个游戏用的,否则只要改一下RGSS的DLL里的编码换成CP_ACP就行了
在我初学RM的时候觉得脚本是高手的工具,等我学会了编程技术后才发现脚本原来是小孩子的玩具。
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
480
在线时间
177 小时
注册时间
2006-10-3
帖子
618
3
 楼主| 发表于 2014-7-1 15:54:33 | 显示全部楼层
前言撤回,我之前搞错了,之所以字数不匹配是因为RGSS根本没有把UTF-8转换成本地编码。

解决办法太太太太简单了,就是直接传递本地编码的路径。也就是说如果现在是UTF-8那么就转换成CP_ACP然后传递给Win32API.new。
在我初学RM的时候觉得脚本是高手的工具,等我学会了编程技术后才发现脚本原来是小孩子的玩具。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-5-14 21:48

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表