Project1

标题: 解决66rpg对话加强脚本中无法使用汉字文件名的问题 [打印本页]

作者: kaien    时间: 2009-2-1 00:10
提示: 作者被禁止或删除 内容自动屏蔽
作者: 亿万星辰    时间: 2009-2-1 00:35
嗯,不错的想法,不过其实用一句转码就可以支持中文了……
不过一般文件名还是命名成英文的比较好……
作者: suicaoya123    时间: 2009-2-1 00:38
至少可以少打几个字母....英文的好..了...省得麻烦
作者: kaien    时间: 2009-2-1 00:59
提示: 作者被禁止或删除 内容自动屏蔽
作者: 亿万星辰    时间: 2009-2-1 17:23
  1. #------------------------------------------------------------------------------
  2. # Moonlight INN
  3. # http://cgi.members.interq.or.jp/aquarius/rasetsu/
  4. # RaTTiE
  5. # [email protected]
  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
复制代码

就是这个东西
作者: 風雲Ж贝贝    时间: 2009-2-1 17: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?”判断有没有文件好
作者: goahead    时间: 2009-2-1 17:52
提示: 作者被禁止或删除 内容自动屏蔽
作者: 風雲Ж贝贝    时间: 2009-2-1 17:58
  1. # EasyConv::s2u(text) : S-JIS -> UTF-8
  2. # EasyConv::u2s(text) : UTF-8 -> S-JIS
复制代码

这不是说了么
作者: kaien    时间: 2009-2-2 10:13
提示: 作者被禁止或删除 内容自动屏蔽
作者: 風雲Ж贝贝    时间: 2009-2-2 17:33
  1. FileTest.exist?(EasyConv.s2u("Graphics/battlers/#{@face}"))
复制代码

这个方法好象用错了,应该是u2s不是s2u,不过转码是真的判断不了
你说用open没文件会返回nil,我测试过了
确实可靠
昨天你好象没加begin,
现在加了就真能判定了
作者: 亿万星辰    时间: 2009-2-2 22:56
看来是我记错了。
不过我肯定记得有人告诉过我如何判断Unicode文件名的方法
作者: 風雲Ж贝贝    时间: 2009-2-2 23:01
Unicode文件名是什么东西?
是怎样判定的?
作者: goahead    时间: 2009-2-3 01:26
提示: 作者被禁止或删除 内容自动屏蔽
作者: 小华    时间: 2009-2-3 03:40
提示: 作者被禁止或删除 内容自动屏蔽
作者: 亿万星辰    时间: 2009-2-3 04:32
以下引用風雲Ж贝贝于2009-2-2 15:01:30的发言:

Unicode文件名是什么东西?
是怎样判定的?

一般就是指所说的全角字符,汉字啊啥的
作者: yangff    时间: 2009-2-4 18:13
很抱歉,我成功了(没用你的函数直接判断)vx
作者: yangff    时间: 2009-2-4 18:35
Private Declare Function SHFileExists Lib "shell32" Alias "#45" (ByVal szPath As String) As Long
作者: 沉影不器    时间: 2009-2-5 06:32
提示: 作者被禁止或删除 内容自动屏蔽
作者: kaien    时间: 2009-2-6 14:06
提示: 作者被禁止或删除 内容自动屏蔽
作者: 沉影不器    时间: 2009-2-8 22:57
提示: 作者被禁止或删除 内容自动屏蔽




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1