javascript的encodeURI函数有没有任何有效的用法?应该encodeURI永远使用?
据我所知道的,当你试图做一个HTTP请求,你要么有:
- 一个完整的URI
- 要放置在一个URI,或者是一些片段一个unicode字符串或UTF-8字节序列
在第一种情况下,显然没有事情需要做任何事情来请求它。注意:如果你真的想把它作为参数传递(例如?url = http ...),那么你实际上有第二个情况的实例,看起来像是一个URI。
在第二种情况下,你应该始终 unicode字符串转换为UTF-8,然后调用encodeURIComponent方法将它添加到URI之前转义所有字符。 (如果你有一个UTF-8字节序列而不是unicode字符串,你可以跳过convert-to-utf8步骤)。
假设我没有错过任何东西,我不能看到是encodeURI有效使用。如果你使用它,很可能你已经构造了无效的URI,然后尝试的事实,这简直是不可能的,因为你不知道哪个字从字面上意后,“消毒”它,并意欲进行转义。
我已经看到了很多反对使用逃生()的建议,但没有看到任何阻碍是encodeURI。我错过了有效的用途吗?
我相信,“您想放入URI中的某个片段”可以称为“URI组件”。 “在第二种情况下,您应该始终将unicode字符串转换为UTF-8” - 而不是JavaScript。 encodeURIComponent会自动将字符串转换为UTF-8(并且decodeURIComponent会将UTF-8八位字节转换回Unicode字符)。 – mgiuca 2012-02-12 08:00:37