我的一些URL上有一些特殊字符。例如:
http://blabla.com/title/?t=burası
当我从其他页面提供指向该页面的链接时,我使用:

URI.encode(s)

它产生了这个链接:
/title/?t=buras%C4%B1

在这之前一切都是正常的,同时我在页面上还有另一个表单,它有编码的url。但当用户访问/title/?t=buras%C4%B1时,浏览器倾向于解码我编码的url,并将url转换为/title/?t=burası。问题从这里开始,因为当用户试图从“buras_”页面上的表单发送内容时,sinatra会给出一个错误:
ERROR URI::InvalidURIError: bad URI(is not URI?): http://localhost:3000/title/?t=burası
我认为这是因为http请求的“referer”字符串,但我找不到任何解决方法,只要浏览器倾向于自动解码字符串。

最佳答案

您应该在form方法中对uri进行编码。
例如,使您的html表单操作看起来像这样:

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

这能帮你解决问题吗?
(编辑:谢谢X1A4的更正——你当然是对的!:)

07-28 02:30