赞 | 451 |
VIP | 56 |
好人卡 | 75 |
积分 | 424 |
经验 | 124650 |
最后登录 | 2024-11-24 |
在线时间 | 7602 小时 |
Lv5.捕梦者 (管理员) 老黄鸡
- 梦石
- 0
- 星屑
- 42409
- 在线时间
- 7602 小时
- 注册时间
- 2009-7-6
- 帖子
- 13506
|
RM里转码无非是用MultiByteToWideChar和WideCharToMultiByte
- # 声明
- MultiByteToWideChar = Win32API.new('kernel32', 'MultiByteToWideChar', 'ilpipi', 'i')
- WideCharToMultiByte = Win32API.new('kernel32', 'WideCharToMultiByte', 'ilpipipp', 'i')
- #--------------------------------------------------------------------------
- # ● 转码:系统转UTF-8
- #--------------------------------------------------------------------------
- def s2u(text)
- len = MultiByteToWideChar.call(0, 0, text, -1, nil, 0);
- buf = "\0" * (len*2)
- MultiByteToWideChar.call(0, 0, text, -1, buf, buf.size/2);
- len = WideCharToMultiByte.call(65001, 0, buf, -1, nil, 0, nil, nil);
- ret = "\0" * len
- WideCharToMultiByte.call(65001, 0, buf, -1, ret, ret.size, nil, nil);
- return ret.delete("\000")
- end
- #--------------------------------------------------------------------------
- # ● 转码:UTF-8转系统
- #--------------------------------------------------------------------------
- def u2s(text)
- len = MultiByteToWideChar.call(65001, 0, text, -1, nil, 0);
- buf = "\0" * (len*2)
- MultiByteToWideChar.call(65001, 0, text, -1, buf, buf.size/2);
- len = WideCharToMultiByte.call(0, 0, buf, -1, nil, 0, nil, nil);
- ret = "\0" * len
- WideCharToMultiByte.call(0, 0, buf, -1, ret, ret.size, nil, nil);
- return ret.delete("\000")
- end
复制代码
但本人对字体文件的数据结构没什么了解,你可以试试转码后是否有对应的下标。 |
|