decodeURIComponent(encodeURIComponent(string))的结果是什么?

时间:2013-03-12 11:11:45

标签: javascript

当我在工作中处理一些奇怪的JavaScript代码时,我发现了这个:

string = decodeURIComponent(encodeURIComponent(string));

在我看来,这段代码没用,我必须删除它。但也许这对一些非常具体的案件来说是个黑客攻击。谷歌告诉我,这个指令还有其他程序。

那么,你知道这是什么结果吗?只是字符串的缓慢内存副本?

1 个答案:

答案 0 :(得分:0)

只是看着它,我会说他们互相取消,返回的字符串是原始输入字符串。除非我错过了什么,否则它没有任何副作用。

但是,我之前看过这样的代码

return unescape( encodeURIComponent( s ) );

return decodeURIComponent( escape( s ) );

使用encodeURIComponent / decodeURIComponent绑定到UTF8的事实,而escape / unescape不绑定。

除了UTF-8编码/解码部分之外的所有部分都是一个黑客攻击,这些部分发生在经过大量优化的浏览器本机代码中,而不是手写的javascript代码。

有关详细说明,请参阅http://monsur.hossa.in/2012/07/20/utf-8-in-javascript.html