查看: 5173|回复: 19

解决66rpg对话加强脚本中无法使用汉字文件名的问题

  [复制链接]
头像被屏蔽
梦石
0
星屑
50
在线时间
0 小时
注册时间
2009-1-31
回帖
24
发表于 2009-2-1 00:10:25 | 显示全部楼层 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
梦石
0
星屑
275
在线时间
1373 小时
注册时间
2005-10-16
回帖
5038

贵宾

发表于 2009-2-1 00:35:10 | 显示全部楼层
嗯,不错的想法,不过其实用一句转码就可以支持中文了……
不过一般文件名还是命名成英文的比较好……
我只个搬答案的
叔叔我已经当爹了~
婚后闪人了……
回复

使用道具 举报

梦石
0
星屑
55
在线时间
446 小时
注册时间
2006-11-18
回帖
1465
发表于 2009-2-1 00:38:28 | 显示全部楼层
至少可以少打几个字母....英文的好..了...省得麻烦
回复

使用道具 举报

头像被屏蔽
梦石
0
星屑
50
在线时间
0 小时
注册时间
2009-1-31
回帖
24
 楼主| 发表于 2009-2-1 00:59:46 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

梦石
0
星屑
275
在线时间
1373 小时
注册时间
2005-10-16
回帖
5038

贵宾

发表于 2009-2-1 17:23:46 | 显示全部楼层
  1. #------------------------------------------------------------------------------
  2. # Moonlight INN
  3. # http://cgi.members.interq.or.jp/aquarius/rasetsu/
  4. # RaTTiE
  5. # rasetsu@aquarius.interq.or.jp
  6. #------------------------------------------------------------
  7. # EasyConv::s2u(text) : S-JIS -> UTF-8
  8. # EasyConv::u2s(text) : UTF-8 -> S-JIS
  9. #==============================================
  10. module EasyConv
  11. # API梡掕悢掕媊
  12.    CP_ACP = 0
  13.    CP_UTF8 = 65001

  14. #--------------------------------------------------------------------------
  15. # 仠 S-JIS -> UTF-8
  16. #--------------------------------------------------------------------------
  17. def s2u(text)
  18. # API掕媊
  19.    m2w = Win32API.new('kernel32', 'MultiByteToWideChar', 'ilpipi', 'i')
  20.    w2m = Win32API.new('kernel32', 'WideCharToMultiByte', 'ilpipipp', 'i')

  21. # S-JIS -> Unicode
  22.    len = m2w.call(CP_ACP, 0, text, -1, nil, 0);
  23.    buf = "\0" * (len*2)
  24.    m2w.call(CP_ACP, 0, text, -1, buf, buf.size/2);

  25. # Unicode -> UTF-8
  26.    len = w2m.call(CP_UTF8, 0, buf, -1, nil, 0, nil, nil);
  27.    ret = "\0" * len
  28.    w2m.call(CP_UTF8, 0, buf, -1, ret, ret.size, nil, nil);
  29.    
  30.    return ret
  31. end
  32. # module_function偲偟偰岞奐
  33. module_function :s2u
  34. #--------------------------------------------------------------------------
  35. # 仠 UTF-8 -> S-JIS
  36. #--------------------------------------------------------------------------
  37. def u2s(text)
  38. # API掕媊
  39.    m2w = Win32API.new('kernel32', 'MultiByteToWideChar', 'ilpipi', 'i')
  40.    w2m = Win32API.new('kernel32', 'WideCharToMultiByte', 'ilpipipp', 'i')

  41. # UTF-8 -> Unicode
  42.    len = m2w.call(CP_UTF8, 0, text, -1, nil, 0);
  43.    buf = "\0" * (len*2)
  44.    m2w.call(CP_UTF8, 0, text, -1, buf, buf.size/2);

  45. # Unicode -> S-JIS
  46.    len = w2m.call(CP_ACP, 0, buf, -1, nil, 0, nil, nil);
  47.    ret = "\0" * len
  48.    w2m.call(CP_ACP, 0, buf, -1, ret, ret.size, nil, nil);
  49.    
  50.    return ret
  51. end
  52. # module_function偲偟偰岞奐
  53. module_function :u2s
  54. end
复制代码

就是这个东西
我只个搬答案的
叔叔我已经当爹了~
婚后闪人了……
回复

使用道具 举报

梦石
0
星屑
50
在线时间
4 小时
注册时间
2008-8-20
回帖
145
发表于 2009-2-1 17:50:50 | 显示全部楼层
  1. # 检查指定路径的文件是否存在
  2. def checkfile(filepath)
  3. f = open(filepath,"r")
  4. if f!=nil
  5.    f.close
  6.    return true
  7. end
  8. f.close
  9. return false
  10. end
复制代码

这句似乎有问题
我用这个判断不行
这句是说某文件为空时返回false,没文件时好象不能返回,在open那段出错了
我看还是用“Dir["*"].include?”判断有没有文件好
回复

使用道具 举报

头像被屏蔽
梦石
0
星屑
50
在线时间
21 小时
注册时间
2007-7-3
回帖
570
发表于 2009-2-1 17:52:54 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复

使用道具 举报

梦石
0
星屑
50
在线时间
4 小时
注册时间
2008-8-20
回帖
145
发表于 2009-2-1 17:58:01 | 显示全部楼层
  1. # EasyConv::s2u(text) : S-JIS -> UTF-8
  2. # EasyConv::u2s(text) : UTF-8 -> S-JIS
复制代码

这不是说了么
回复

使用道具 举报

头像被屏蔽
梦石
0
星屑
50
在线时间
0 小时
注册时间
2009-1-31
回帖
24
 楼主| 发表于 2009-2-2 10:13:30 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

梦石
0
星屑
50
在线时间
4 小时
注册时间
2008-8-20
回帖
145
发表于 2009-2-2 17:33:58 | 显示全部楼层
  1. FileTest.exist?(EasyConv.s2u("Graphics/battlers/#{@face}"))
复制代码

这个方法好象用错了,应该是u2s不是s2u,不过转码是真的判断不了
你说用open没文件会返回nil,我测试过了
确实可靠
昨天你好象没加begin,
现在加了就真能判定了
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部