4

我的一些网址上有一些特殊字符。例如:

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

当我从其他页面提供指向该页面的链接时,我使用:

URI.encode(s)

这产生了这个链接:

/title/?t=buras%C4%B1

虽然到目前为止一切正常,但我在页面上还有另一个表单,其中包含编码的 url。但是当用户访问时浏览器倾向于解码我编码的 url/title/?t=buras%C4%B1并将 url 转换为/title/?t=burası. 问题从这里开始,因为当用户尝试从“burası”页面上的表单发送内容时,sinatra 给出了错误:

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

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

4

1 回答 1

3

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

例如,让您的 HTML FORM 动作看起来像这样:

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

这能为你解决吗?

(编辑:感谢 x1a4 的更正——当然你是对的!:)

于 2012-06-10T01:31:05.463 回答