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

Project1

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

[通用发布] 字符串编码 UTF8 转 URL

[复制链接]

Lv4.逐梦者

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

贵宾

跳转到指定楼层
1
 楼主| 发表于 2013-3-8 15:16:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
虽然这个帖子的标签是[通用发布]
不过我并没有在 XP 和 VX 上测试~

这个东西的主要用途大概就是这个了~
    http://rpg.blue/forum.php?mod=viewthread&tid=176116

这个转换函数是根据其他语言改的.
编码这东西我也不清楚.如果出现BUG.我无法解决.请慎用~
    http://myvs01.blog.163.com/blog/static/1853340902012524114731486/

下面这是在 RM 里的定义

  1. #==============================================================================
  2. # ■ 本代码来自 www.66rpg.com 使用或转载请保留此信息
  3. #------------------------------------------------------------------------------
  4. #  功能:将UTF8字符串转换为URL编码
  5. #  作者:后知后觉(66rpg.com)
  6. #  说明:
  7. #    本代码由参考其他语言的代码转换而来
  8. #    转换源地址:
  9. #      http://myvs01.blog.163.com/blog/static/1853340902012524114731486/
  10. #  使用方法:
  11. #    对字符串调用 to_url 即可获得 URL编码 的字符串新实例
  12. #==============================================================================

  13. class String
  14.   def to_url
  15.     strDest = ""
  16.     hzhj = 0
  17.     each_byte do |byte|
  18.       if hzhj > 0
  19.         strDest += sprintf("%%%02X", byte)
  20.         hzhj -= 1
  21.       elsif byte <= 0x7f
  22.         bytechr = byte.chr
  23.         # 字母和数字不转换
  24.         if (bytechr >= '0' && bytechr <= '9') ||
  25.            (bytechr >= 'A' && bytechr <= 'Z') ||
  26.            (bytechr >= 'a' && bytechr <= 'z')
  27.           strDest += bytechr
  28.         elsif bytechr == ' '
  29.           # 空格转换成 + 号
  30.           strDest += '+'
  31.         else
  32.           # 其他标点符号
  33.           strDest += sprintf("%%%02X", byte)
  34.         end
  35.       else
  36.         # 汉字或者其他的uft8文字,每3个字节一转
  37.         strDest += sprintf("%%%02X", byte)
  38.         hzhj = 2
  39.       end
  40.     end
  41.     strDest
  42.   end
  43. end

复制代码
下面这是一段用来测试的代码.

  1. module Hzhj; end
  2. module Hzhj::SNS
  3.   module_function
  4.   def init_sns
  5.     title = ("UTF8ToURL编码函数测试2 这次测试点符号什么的《|,.<>=+-*/~!@\#$%^&*()_》[]{};\':\"/?").to_url
  6.     url = "http://www.66rpg.com/"
  7.     pic = ""
  8.     @sns = {}
  9.     @sns[:xlwb] = ["新浪微博",
  10.       "http://v.t.sina.com.cn/share/share.php?pic=#{pic}&title=#{title}"]
  11.     @sns[:txwb] = ["腾讯微博",
  12.       "http://v.t.qq.com/share/share.php?title=#{title}&url=#{url}&pic=#{pic}"]
  13.     @sns[:wywb] = ["网易微博",
  14.       "http://t.163.com/article/user/checkLogin.do?&info=#{title} #{url}"]
  15.     @sns[:qqkj] = ["QQ空间",
  16.       "http://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?title=#{title}&url=#{url}"]
  17.     @sns[:bdkj] = ["百度空间",
  18.       "http://apps.hi.baidu.com/share/?title=#{title}&url=#{url}"]
  19.     @sns[:rrw]  = ["人人网",
  20.       "http://share.renren.com/share/buttonshare.do?link=#{url}"]
  21.     title = ("RGSS UTF8 String To URL Coding").to_url
  22.     txt = ("RGSS UTF8 String To URL Coding").to_url
  23.     @sns[:kxw]  = ["开心网",
  24.       "http://www.kaixin001.com/~repaste/share.php?rtitle=#{title}&rurl=#{url}&rcontent=#{txt}"]
  25.   end
  26.   def call(url)
  27.     bb_66rpg = Win32API.new('shell32.dll', 'ShellExecuteA', 'pppppi', 'i')
  28.     bb_66rpg.call(0, 'open', url, 0, 0, 1)
  29.   end
  30.   def sns
  31.     @sns
  32.   end
  33.   def name(symbol)
  34.     @sns[symbol] ? @sns[symbol][0] : "???"
  35.   end
  36.   def share(symbol)
  37.     call(@sns[symbol][1]) if @sns[symbol]
  38.   end
  39. end
  40. Hzhj::SNS.init_sns
  41. Hzhj::SNS.share(:xlwb)
  42. Hzhj::SNS.share(:txwb)
  43. Hzhj::SNS.share(:wywb)
  44. Hzhj::SNS.share(:qqkj)
  45. Hzhj::SNS.share(:bdkj)
  46. Hzhj::SNS.share(:rrw)
  47. Hzhj::SNS.share(:kxw)

复制代码
大概就是这样了~
分享按钮什么的请自行解决~











你知道得太多了

Lv1.梦旅人

梦石
0
星屑
50
在线时间
48 小时
注册时间
2010-8-10
帖子
46
2
发表于 2013-3-9 13:13:10 | 只看该作者
呃,感觉还不错,让我的脑海里又多了一条思路
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-20 02:28

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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