赞 | 0 |
VIP | 157 |
好人卡 | 6 |
积分 | 1 |
经验 | 113829 |
最后登录 | 2014-1-16 |
在线时间 | 26 小时 |
Lv1.梦旅人 B
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 26 小时
- 注册时间
- 2007-8-26
- 帖子
- 3693
|
本帖最后由 ONEWateR 于 2009-8-29 01:07 编辑
好吧~ 敷衍一下~ - -
请pia之~- #==============================================================================
- # ■ String
- #------------------------------------------------------------------------------
- # 字符串类。可处理任意长度的字节串。(追加编码转换的定义)
- #==============================================================================
- class String
- #--------------------------------------------------------------------------
- # ● 用来编码 Ruby 字符串、解码 unicode 的 两个 Windows API 函数
- #--------------------------------------------------------------------------
- @@MultiByteToWideChar = Win32API.new("kernel32", "MultiByteToWideChar", ['I', 'L', 'P', 'I', 'P', 'I'], 'I')
- @@WideCharToMultiByte = Win32API.new("kernel32", "WideCharToMultiByte", ['I', 'L', 'P', 'I', 'P', 'I', 'P', 'P'], 'I')
- #--------------------------------------------------------------------------
- # ● 返回将 Ruby UTF-8 字符串对象(本身)编码为 unicode 后的字符串
- #--------------------------------------------------------------------------
- def to_unicode
- len = @@MultiByteToWideChar.call(65001, 0, self, -1, 0, 0) << 1
- buf =" " * len
- # 65001: UTF-8 字符集编码(代码页)
- @@MultiByteToWideChar.call(65001, 0, self, -1, buf, len)
- return buf
- end
- #--------------------------------------------------------------------------
- # ● 返回将编码为 unicode 的字符串对象(本身)解码为 UTF-8 后的字符串
- #--------------------------------------------------------------------------
- def to_UTF8
- len = @@WideCharToMultiByte.call(65001, 0, self, -1, 0, 0, 0, 0)
- buf =" " * len
- @@WideCharToMultiByte.call(65001, 0, self, -1, buf, len, 0, 0)
- # 去掉 '\0' 字符串结束符(因为转换之后仅仅用于 Ruby 字符串)
- buf.slice!(-1, 1)
- return buf
- end
- end
- FindFirstFile = Win32API.new("kernel32", "FindFirstFileW", "PP", "L")
- FindNextFile = Win32API.new("kernel32", "FindNextFileW", "LP", "I")
- filenames = []
- findFileData = " " * 592
- hFindFile = FindFirstFile.call(
- "*".to_unicode, findFileData)
- while FindNextFile.call(hFindFile, findFileData) != 0
- filenames.push(findFileData[44, 45 + 260 * 2].to_UTF8)
- end
- p filenames.include?("哈.ini")
复制代码 |
|