2012-05-28 77 views
4

我在我的一些网址上有一些特殊字符。例如:错误URI :: InvalidURIError:错误的URI(不是URI?),因为浏览器

http://blabla.com/title/?t=burası

当我给予链接从其他网页页面,我用:

URI.encode(s) 

产生此链接:当一切正常

/title/?t=buras%C4%B1 

直到这一点,我也有另一种形式在页面上有编码的网址。但是,当用户访问/title/?t=buras%C4%B1并将网址变为/title/?t=burası时,浏览器倾向于解码我编码的网址。这里的问题开始,因为当用户试图从“burası”网页上的表格送东西,西纳特拉给出了一个错误:

ERROR URI::InvalidURIError: bad URI(is not URI?): http://localhost:3000/title/?t=burası

我想这是因为HTTP请求的“引用”字符串,但我只要浏览器倾向于自动解码字符串,就找不到任何解决方法。

+0

你能提供一个最小的工作示例吗?我无法重现 - 请参阅[Gist](https://gist.github.com/2891784)。 – jmdeldin

回答

3

您应该在FORM方法中编码URI。

例如,让你的HTML表单操作是这个样子:

<form action="/title/?t=buras%C4%B1" method="post"> 

这是否为您解决?

(编辑:谢谢x1a4的纠正 - 当然你是对的!:)

+0

你已经在你的例子中切换了'action'和'method'属性。 – x1a4

相关问题