根据几个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会产生什么后果呢?
答案 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等测试过?最重要的是,它将是浏览器特定的。