在将urls作为参数添加到url中时,我在使用空格,加号,双引号和重音拉丁字符等字符时遇到了一些问题。它们总是被转换为以%开头的数字,这给我们带来了很多麻烦,因为葡萄牙语使用了很多这些字符。
在URL中手动输入字符时,一切正常,但一旦rails将其转换为链接,它就会替换它。
有没有办法避免这种情况?
这是一个例子。而不是
url?q=transgênico
我们得到了
url?q=transg%C3%AAnico
这完全打破了我们通过参数搜索和与其他网站的通信 - 在手动输入特殊字符时效果很好。
我必须承认我没有搜索过这个,因为英语不是我的第一语言,我不知道要搜索什么...我所有的尝试都没有结果,但我可能使用了不好的术语。
使用Rails 2.3.8。
提前谢谢。
答案 0 :(得分:3)
我认为您必须对这些字符进行编码,因为它们在网址中无效:Uniform Resource Locators (URL) Spec和stackoverflow
答案 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"