我的一些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的更正——你当然是对的!:)