赞 | 0 |
VIP | 0 |
好人卡 | 0 |
积分 | 8 |
经验 | 132 |
最后登录 | 2014-9-6 |
在线时间 | 1270 小时 |
Lv2.观梦者
- 梦石
- 0
- 星屑
- 777
- 在线时间
- 1270 小时
- 注册时间
- 2011-2-14
- 帖子
- 5589
|
因为游戏内部的编码与操作系统不同,但是英文等相同。汉字由内部直接输出会变成乱码。
用下面脚本对字符进行转换,具体自己尝试
这段脚本必须贴在最前面
例如 a = "水君"
b = a.u2w
这样“水君”这串字的编码就可以转换了- #------------------------------------------------------------------------------
- # String 类追加定义。
- #==============================================================================
-
- class String
- #----------------------------------------------------------------------------
- # ● API
- #----------------------------------------------------------------------------
- @@MultiByteToWideChar = Win32API.new('kernel32', 'MultiByteToWideChar', 'ilpipi', 'i')
- @@WideCharToMultiByte = Win32API.new('kernel32', 'WideCharToMultiByte', 'ilpipipp', 'i')
- #----------------------------------------------------------------------------
- # ● UTF-8 转 Unicode
- #----------------------------------------------------------------------------
- def u2w
- i = @@MultiByteToWideChar.call(65001, 0 , self, -1, nil,0)
- buffer = "\0" * (i*2)
- @@MultiByteToWideChar.call(65001, 0 , self, -1, buffer, i)
- buffer.chop!
- return buffer
- end
- #----------------------------------------------------------------------------
- # ● UTF-8 转系统编码
- #----------------------------------------------------------------------------
- def u2s
- i = @@MultiByteToWideChar.call(65001, 0 , self, -1, nil,0)
- buffer = "\0" * (i*2)
- @@MultiByteToWideChar.call(65001, 0 , self, -1, buffer, i)
- i = @@WideCharToMultiByte.call(0, 0, buffer, -1, nil, 0, nil, nil)
- result = "\0" * i
- @@WideCharToMultiByte.call(0, 0, buffer, -1, result, i, nil, nil)
- result.chop!
- return result
- end
- #----------------------------------------------------------------------------
- # ● 系统编码转 UTF-8
- #----------------------------------------------------------------------------
- def s2u
- i = @@MultiByteToWideChar.call(0, 0, self, -1, nil, 0)
- buffer = "\0" * (i*2)
- @@MultiByteToWideChar.call(0, 0, self, -1, buffer, buffer.size / 2)
- i = @@WideCharToMultiByte.call(65001, 0, buffer, -1, nil, 0, nil, nil)
- result = "\0" * i
- @@WideCharToMultiByte.call(65001, 0, buffer, -1, result, result.size, nil, nil)
- result.chop!
- return result
- end
- end
复制代码 |
评分
-
查看全部评分
|