两个Ruby小函数:URLDecode/URLEncode
作者:半瓶墨水 链接:http://www.2maomao.com/blog/2-ruby-cookies-en-de-code/
在解码、编码URL时常用到的URLDecode和URLEncode,用Ruby写了一下,应该可以应付中英文的情况了:
def URLDecode(str)
str.gsub!(/%[a-fA-F0-9]{2}/) { |x| x = x[1..2].hex.chr }
end
def URLEncode(str)
str.gsub!(/[^\w$&\-+.,\/:;=?@]/) { |x| x = format("%%%x", x[0]) }
end
str.gsub!(/%[a-fA-F0-9]{2}/) { |x| x = x[1..2].hex.chr }
end
def URLEncode(str)
str.gsub!(/[^\w$&\-+.,\/:;=?@]/) { |x| x = format("%%%x", x[0]) }
end
tmd,ruby太不是东西,没有Char这个类型,一个字符转为一个整型值很容易,一个整形转回一个字符的方法我查了n久才发现原来可以用Integer:chr函数解决。
Update:
好吧,我承认,我是一个Ruby土人:CGI::escape, CGI::inescape, CGI::escapeHTML, CGI::inescapeHTML,
参见:http://www.ruby-doc.org/core/classes/CGI.html
标签:[tag]ruby[/tag]



不错,正需要这个呢
不支持中文,不过改正如下:
def urlencode(str)
str.gsub(/[^a-zA-Z0-9_\.\-]/n) {|s| sprintf(’%%%02x’, s[0]) }
end
在ruby1.8中已经在http和url中有支持。
搞错,是支持中文,不过你句子中”%%%x”, 打错了。
@kenlistian
多谢指出,不过,”%%%x” 应该是什么? 我给改改。
@kenlistian
我搞清楚了,万恶的RichEDIT自动全半角切换
用Coolcode就没事了