因此,我尝试使用 Rails URL 助手 ( page_url
) 创建包含特殊字符的 URL,包括与号。大多数情况都像您期望的那样工作:
(rdb:1) page_url('foo', :host => 'host')
"http://host/pages/foo"
(rdb:1) page_url('foo_%_bar', :host => 'host')
"http://host/pages/foo_%25_bar"
但由于某些奇怪的原因,与号没有被转义:
(rdb:1) page_url('foo_&_bar', :host => 'host')
"http://host/pages/foo_&_bar"
如果我预先逃脱它们,它们就会被破坏:
(rdb:1) page_url('foo_%26_bar', :host => 'host')
"http://host/pages/foo_%2526_bar"
CGI::escape
,另一方面,可以很好地逃脱它们:
(rdb:1) CGI::escape('foo_&_bar')
"foo_%26_bar"
发生了什么事,我该如何解决这个问题?(就是比 更好的东西gsub('&', '%26')
。)