Rails:如何避免更改URL中的空格和其他特殊字符

时间:2010-11-12 18:11:09

标签: html ruby-on-rails ruby url special-characters

在将urls作为参数添加到url中时,我在使用空格,加号,双引号和重音拉丁字符等字符时遇到了一些问题。它们总是被转换为以%开头的数字,这给我们带来了很多麻烦,因为葡萄牙语使用了很多这些字符。

在URL中手动输入字符时,一切正常,但一旦rails将其转换为链接,它就会替换它。

有没有办法避免这种情况?

这是一个例子。而不是

url?q=transgênico

我们得到了

url?q=transg%C3%AAnico

这完全打破了我们通过参数搜索和与其他网站的通信 - 在手动输入特殊字符时效果很好。

我必须承认我没有搜索过这个,因为英语不是我的第一语言,我不知道要搜索什么...我所有的尝试都没有结果,但我可能使用了不好的术语。

使用Rails 2.3.8。

提前谢谢。

3 个答案:

答案 0 :(得分:3)

我认为您必须对这些字符进行编码,因为它们在网址中无效:Uniform Resource Locators (URL) Specstackoverflow

答案 1 :(得分:0)

我会尝试在:escape => false等中设置link_to标记。如果这没有帮助,你可能需要修补actionpack/lib/action_view/helpers/url_helper.rb

答案 2 :(得分:0)

Maudite是对的。在将此网址用作搜索字词之前,您可以将此网址转换回“漂亮”形式:

require 'cgi'
CGI.unescape 'url?q=transg%C3%AAnico'

产生

"url?q=transgênico"