foo*_*olo 9 html url escaping cross-browser
我有一个看起来像这样的链接(它有点难看,因为它是URL)
<a href="/items?fc%5B%5D=12345&fc%5B%5D=56789&utf8=%E2%9C%93">foo</a>
Run Code Online (Sandbox Code Playgroud)
有点清楚,它是URL编码并转换为
<a href="/items?fc[]=12345&fc[]=56789&utf8=?">foo</a>
Run Code Online (Sandbox Code Playgroud)
提交表单时,目标URL在不同的浏览器中看起来不同:
在Firefox中,它看起来像是期望的:
http://mydomain/items?fc[]=12345&fc[]=56789&utf8=?
Run Code Online (Sandbox Code Playgroud)
在Chrome中,方括号显示为URL编码(当使用其中许多地址时,它会给出非常难看且非专业的地址).
http://mydomain/items?fc%5B%5D=12345&fc%5B%5D=56789&utf8=?
Run Code Online (Sandbox Code Playgroud)
在IE9(及更早版本)中,所有内容都显示为URL编码:
http://mydomain/items?fc%5B%5D=12345&fc%5B%5D=56789&utf8=%E2%9C%93
Run Code Online (Sandbox Code Playgroud)
我可以使用"utf8 = ..."部分,因为它只是IE中的一个问题.但是,当方括号明确键入URL时,没有一个浏览器处理有任何问题,所以我不明白为什么Chrome和IE,但不是Firefox必须用URL编码显示括号.
由于表单的html代码在所有浏览器中都是相同的,我认为这与浏览器有关,而不是与站点(在这种情况下是Ruby on Rails站点)有关
编辑:那么澄清我的实际问题:为什么这有所不同?有没有办法让它在至少Chrome中看起来很好看?它可以通过在href ="..."中不进行URL转义来修复,但我认为这是针对URL编码规则的吗?
当您想要共享这些链接(有状态)时,我假设您预计您的链接将被共享、从网页链接、复制、通过电子邮件发送等。
即使在浏览器之外(例如,您的链接被复制到其他页面、电子邮件等中),也可能会发生某些编码。如果你必须使用这些字符,你可能不得不接受丑陋的东西会出现在某个地方。