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

cdredfox · 2012年04月27日 · 最后由 scys77 回复于 2012年04月27日 · 4601 次阅读

请教大家一个问题,关于 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 一直在用你告诉我的这个方法,嘻..

需要 登录 后方可回复, 如果你还没有账号请 注册新账号