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

Project1

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

[已经过期] 关于API,让一个输入条支持中文

 关闭 [复制链接]

Lv4.逐梦者

梦石
0
星屑
6695
在线时间
1666 小时
注册时间
2008-10-29
帖子
6710

贵宾

1
发表于 2011-6-8 22:18:35 | 显示全部楼层
在第 95 行前面插入如下 2 行:
  1.       text = EasyConv.s2u(text)
  2.       text.delete!("\000")
复制代码
然后再加上这个脚本:
  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.   CP_ACP = 0
  12.   CP_UTF8 = 65001
  13.   #--------------------------------------------------------------------------
  14.   # 仠 S-JIS -> UTF-8
  15.   #--------------------------------------------------------------------------
  16.   def s2u(text)
  17.     m2w = Win32API.new('kernel32', 'MultiByteToWideChar', 'ilpipi', 'i')
  18.     w2m = Win32API.new('kernel32', 'WideCharToMultiByte', 'ilpipipp', 'i')
  19.     # S-JIS -> Unicode
  20.     len = m2w.call(CP_ACP, 0, text, -1, nil, 0);
  21.     buf = "\0" * (len*2)
  22.     m2w.call(CP_ACP, 0, text, -1, buf, buf.size/2);
  23.     # Unicode -> UTF-8
  24.     len = w2m.call(CP_UTF8, 0, buf, -1, nil, 0, nil, nil);
  25.     ret = "\0" * len
  26.     w2m.call(CP_UTF8, 0, buf, -1, ret, ret.size, nil, nil);
  27.     return ret
  28.   end
  29.   module_function :s2u
  30.   #--------------------------------------------------------------------------
  31.   # 仠 UTF-8 -> S-JIS
  32.   #--------------------------------------------------------------------------
  33.   def u2s(text)
  34.     m2w = Win32API.new('kernel32', 'MultiByteToWideChar', 'ilpipi', 'i')
  35.     w2m = Win32API.new('kernel32', 'WideCharToMultiByte', 'ilpipipp', 'i')
  36.     # UTF-8 -> Unicode
  37.     len = m2w.call(CP_UTF8, 0, text, -1, nil, 0);
  38.     buf = "\0" * (len*2)
  39.     m2w.call(CP_UTF8, 0, text, -1, buf, buf.size/2);
  40.     # Unicode -> S-JIS
  41.     len = w2m.call(CP_ACP, 0, buf, -1, nil, 0, nil, nil);
  42.     ret = "\0" * len
  43.     w2m.call(CP_ACP, 0, buf, -1, ret, ret.size, nil, nil);
  44.     return ret
  45.   end
  46.   module_function :u2s
  47. end

  48. #========================================
  49. # 本脚本来自www.66rpg.com
  50. #========================================
复制代码

点评

= =最近研究API较多.这东西经常用到.很快速的就找到了...  发表于 2011-6-9 00:04
本来也想这样回答来着= =但是转换字符的脚本找不到了  发表于 2011-6-9 00:01











你知道得太多了

回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-6-6 14:04

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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