我的一些网址上有一些特殊字符。例如:
http://blabla.com/title/?t=burası
当我从其他页面提供指向该页面的链接时,我使用:
URI.encode(s)
生成此链接:
/title/?t=buras%C4%B1
虽然到目前为止一切正常,但我在页面上还有另一个带有编码网址的表单。但是当用户访问/title/?t=buras%C4%B1
并将网址转换为/title/?t=burası
时,浏览器会倾向于解码我的编码网址。问题从这里开始,因为当用户尝试从'burası'页面上的表单发送内容时,sinatra会出错:
ERROR URI::InvalidURIError: bad URI(is not URI?): http://localhost:3000/title/?t=burası
我认为这是因为HTTP请求的'referrer'字符串,但我找不到任何解决方法,只要浏览器倾向于自动解码字符串。
答案 0 :(得分:3)
您应该在FORM方法中对URI进行编码。
例如,让您的HTML FORM操作看起来像这样:
<form action="/title/?t=buras%C4%B1" method="post">
这能为你解决吗?
(编辑:感谢x1a4进行更正 - 当然你是对的!)