带方括号的编码URL。 Chrome / Firefox / IE中的不同行为

时间:2012-09-27 19:29:05

标签: html url cross-browser escaping

我有一个看起来像这样的链接(它有点难看,因为它是URL)

<a href="/items?fc%5B%5D=12345&amp;fc%5B%5D=56789&amp;utf8=%E2%9C%93">foo</a>

有点清楚,它是URL编码并转换为

<a href="/items?fc[]=12345&fc[]=56789&utf8=✓">foo</a>

提交表单后,目标网址在不同浏览器中看起来有所不同:

在Firefox中,它看起来像是理想的:

http://mydomain/items?fc[]=12345&fc[]=56789&utf8=✓

在Chrome中,方括号显示为URL编码(当使用其中许多地址时,它会给出非常难看和非专业的地址)。

http://mydomain/items?fc%5B%5D=12345&fc%5B%5D=56789&utf8=✓

在IE9(及更早版本)中,所有内容都显示为URL编码:

http://mydomain/items?fc%5B%5D=12345&fc%5B%5D=56789&utf8=%E2%9C%93

我可以使用“utf8 = ...”部分,因为它只是IE中的一个问题。 但是当方括号明确键入URL时,没有一个浏览器处理有任何问题,所以我不明白为什么Chrome和IE,但Firefox不必显示带URL编码的括号。

由于表单的html代码在所有浏览器中都是相同的,我认为这与浏览器有关,而不是与网站(在这种情况下是Ruby on Rails网站)有关。

编辑: 所以澄清我的实际问题: 为什么会有所不同? 有没有办法让它在至少Chrome中看起来很好看? 它可以通过在href =“...”中不进行URL转义来修复,但我认为这是针对URL编码规则的吗?

1 个答案:

答案 0 :(得分:1)

由于您想要分享这些链接(有状态),我认为您预计您的链接将被共享,链接从网页,复制,通过电子邮件发送等。

即使在浏览器之外(例如,将链接复制到其他页面,电子邮件等等),也可能会发生某些编码。如果你必须使用这些字符,你可能不得不接受丑陋的地方。