Ruby 关于 URL 地址编码,如何编码一整个网址?

cdredfox · April 27, 2012 · Last by scys77 replied at April 27, 2012 · 4602 hits

请教大家一个问题,关于 url 地址编码的

假如我有一个链接地址,不是本站的是外部的,比如:www.google.com?q=我是 + 中国人 请问这个地址中的 + 号我怎么在跳转的时候翻译为 url 编码? 我尝试使用了 u,他确实是把 + 号转换了,但是转换出来的地址为:http://localhost/www.google..... 这和我想要的不一样,我就直接想要跳转的地址? 大家一般怎么做?

URI.escape

这个我试过,对于 url 有 + 号等特殊符号,还是不能转换,直接显示成了 + 号。

http://www.google.com?q=我是+中国人 试试

我是拿 google 做示例,我真正访问的网址可能不是 google 大多数网站你传 + 是不能识别的,必须要传 + 号对应的编码:%2B

google 搜索的时候会自动的把搜索栏输入的内容中的空格自动变成 +

如果你使用 ActiveSupport,那么试试 Hash#to_query 方法来生成查询串

{:q => "我是+中国人"}.to_query # => "q=%E6%88%91%E6%98%AF%2B%E4%B8%AD%E5%9B%BD%E4%BA%BA"


如果你没有使用 ActiveSupport,你可以看看其实现本质就是 CGI.escape("我是+中国人") (在 Object#to_query 里)

#4 楼 @cdredfox 我的意思是你的地址在转化时或转化后得加上http:// 不然就是相对链接了

@zhangyuan 一直在用你告诉我的这个方法,嘻..

You need to Sign in before reply, if you don't have an account, please Sign up first.