请教大家一个问题,关于 url 地址编码的
假如我有一个链接地址,不是本站的是外部的,比如:www.google.com?q=我是 + 中国人 请问这个地址中的 + 号我怎么在跳转的时候翻译为 url 编码? 我尝试使用了 u,他确实是把 + 号转换了,但是转换出来的地址为:http://localhost/www.google..... 这和我想要的不一样,我就直接想要跳转的地址? 大家一般怎么做?
用URI.escape
URI.escape
这个我试过,对于 url 有 + 号等特殊符号,还是不能转换,直接显示成了 + 号。
http://www.google.com?q=我是+中国人 试试
http://www.google.com?q=我是+中国人
我是拿 google 做示例,我真正访问的网址可能不是 google 大多数网站你传 + 是不能识别的,必须要传 + 号对应的编码:%2B
google 搜索的时候会自动的把搜索栏输入的内容中的空格自动变成 +
如果你使用 ActiveSupport,那么试试 Hash#to_query 方法来生成查询串
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 里)
CGI.escape("我是+中国人")
Object#to_query
#4 楼 @cdredfox 我的意思是你的地址在转化时或转化后得加上http:// 不然就是相对链接了
http://
@zhangyuan 一直在用你告诉我的这个方法,嘻..