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

Project1

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

[已经解决] 请教用FileTest.exists?判断文件问题

[复制链接]

Lv1.梦旅人

梦石
0
星屑
167
在线时间
434 小时
注册时间
2009-1-1
帖子
643
跳转到指定楼层
1
发表于 2012-8-12 16:28:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
用FileTest.exists?(“中文文件")判断文件,如果是中文文件名会失效,怎么解决?
最近在研究XAS

Lv2.观梦者

梦石
0
星屑
777
在线时间
1270 小时
注册时间
2011-2-14
帖子
5589
2
发表于 2012-8-12 19:56:02 | 只看该作者
因为游戏内部的编码与操作系统不同,但是英文等相同。汉字由内部直接输出会变成乱码。

用下面脚本对字符进行转换,具体自己尝试
这段脚本必须贴在最前面

例如 a = "水君"
       b = a.u2w
      这样“水君”这串字的编码就可以转换了
  1. #------------------------------------------------------------------------------
  2. #  String 类追加定义。
  3. #==============================================================================

  4. class String
  5.   #----------------------------------------------------------------------------
  6.   # ● API
  7.   #----------------------------------------------------------------------------
  8.   @@MultiByteToWideChar  = Win32API.new('kernel32', 'MultiByteToWideChar', 'ilpipi', 'i')
  9.   @@WideCharToMultiByte  = Win32API.new('kernel32', 'WideCharToMultiByte', 'ilpipipp', 'i')
  10.   #----------------------------------------------------------------------------
  11.   # ● UTF-8 转 Unicode
  12.   #----------------------------------------------------------------------------
  13.   def u2w
  14.     i = @@MultiByteToWideChar.call(65001, 0 , self, -1, nil,0)
  15.     buffer = "\0" * (i*2)
  16.     @@MultiByteToWideChar.call(65001, 0 , self, -1, buffer, i)
  17.     buffer.chop!
  18.     return buffer
  19.   end  
  20.   #----------------------------------------------------------------------------
  21.   # ● UTF-8 转系统编码
  22.   #----------------------------------------------------------------------------
  23.   def u2s
  24.     i = @@MultiByteToWideChar.call(65001, 0 , self, -1, nil,0)
  25.     buffer = "\0" * (i*2)
  26.     @@MultiByteToWideChar.call(65001, 0 , self, -1, buffer, i)
  27.     i = @@WideCharToMultiByte.call(0, 0, buffer, -1, nil, 0, nil, nil)
  28.     result = "\0" * i
  29.     @@WideCharToMultiByte.call(0, 0, buffer, -1, result, i, nil, nil)
  30.     result.chop!
  31.     return result
  32.   end
  33.   #----------------------------------------------------------------------------
  34.   # ● 系统编码转 UTF-8
  35.   #----------------------------------------------------------------------------
  36.   def s2u
  37.     i = @@MultiByteToWideChar.call(0, 0, self, -1, nil, 0)
  38.     buffer = "\0" * (i*2)
  39.     @@MultiByteToWideChar.call(0, 0, self, -1, buffer, buffer.size / 2)
  40.     i = @@WideCharToMultiByte.call(65001, 0, buffer, -1, nil, 0, nil, nil)
  41.     result = "\0" * i
  42.     @@WideCharToMultiByte.call(65001, 0, buffer, -1, result, result.size, nil, nil)
  43.     result.chop!
  44.     return result
  45.   end
  46. end
复制代码

点评

不只中文名會失效,且無法判定已加密的內容,這得另外再設定才能解決  发表于 2012-8-13 01:02

评分

参与人数 2星屑 +206 梦石 +2 收起 理由
hcm + 200 + 2 认可答案
赛露休斯 + 6 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
167
在线时间
434 小时
注册时间
2009-1-1
帖子
643
3
 楼主| 发表于 2012-8-13 00:21:43 | 只看该作者
可以了,认可楼上
咦...怎么找不到认可答案按钮?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-22 18:23

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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