在URL查询字符串

时间:2017-07-22 04:45:03

标签: url urlencode

根据几个Q& As on SO,您应该对任何不是ascii的内容进行编码,当然还要在查询字符串值和键中使用=&这样的标点符号。

然而AFAIK而不是uri编码工作得很好。

示例:

http://greggman.github.io/doodles/show-query.html?書類=四角形&色=紫&名前=田中

尽我所知

我问的原因是我使用查询字符串来做一些非常简单的图表本地化。典型的交互式图表可能包含1-5个字符串,有人使用该图表本地化文章可以执行类似

的操作
bla bla bla bla see the following diagram

<iframe src="diagram.html?caption=localized%20string"></iframe

in the diagram above bla bla bla ....

编写者和编辑人员能够更轻松地创建,编辑和更正非编码网址

<iframe src="diagram.html?caption=図形の回転し方"></iframe>

容易得多
<iframe src="diagram.html?caption=%E5%9B%B3%E5%BD%A2%E3%81%AE%E5%9B%9E%E8%BB%A2%E3%81%97%E6%96%B9"></iframe>

如果没有任何&#34; 标准&#34;,如果没有后果,我们希望将URL保留为尽可能未编码,以便更容易编辑。例如,这个Q&A表示你应该对它们进行编码,但据我所知,上面的例子适用于IE,Edge,Chrome,Firefox,Safari,Opera。

我知道我可以在某种构建步骤中转换它们。尽管如此,这还不止于此。如果没有不对它们进行编码的后果,那么我将选择不对它们进行编码。

此外,这不是关于与随机其他网站或服务器的接口。这是我的网站,我的服务器。如果某某服务器没有处理这种情况,我不在乎。事实上,对于我的目的,查询字符串仅供客户端使用。

查看标题时,所有浏览器都会在向服务器发出请求时对其进行编码,以便它可以表明它没问题。

那么在查询字符串键和值中不使用uri编码非ascii utf-8会产生什么后果呢?

1 个答案:

答案 0 :(得分:-1)

在不同的浏览器中测试您的链接应该给您一个答案。

浏览器负责编码URL,大部分都是这样做的。但是,在javascript中解析查询字符串证明是有问题的。

在Internet Explorer中,URL被重写为: http://greggman.github.io/doodles/show-query.html?%E6%9B%B8%E9%A1%9E=%E5%9B%9B%E8%A7%92%E5%BD%A2&%E8%89%B2=%E7%B4%AB&%E5%90%8D%E5%89%8D=%E7%94%B0%E4%B8%AD

并且您的javascript打印不可见。

在Chrome和Firefox中,网址以多字节字符显示,您可以看到查询变量。

在Edge中,网址显示与IE相同,但javascript的工作方式与Chrome相同。

您是否也在Safari,Opera等测试过?最重要的是,它将是浏览器特定的。