decodeuriccomponent (encodeuriccomponent (string))的结果是什么?

What is the result of decodeURIComponent(encodeURIComponent(string))?

本文关键字:结果是 是什么 结果 string decodeuriccomponent encodeuriccomponent      更新时间:2023-09-26

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

string = decodeURIComponent(encodeURIComponent(string));

在我看来,这段代码是无用的,我必须删除它。但也许这是针对某些特殊情况的一种hack。Google告诉我,还有其他程序有这个指令。

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

从表面上看,它们相互抵消了,返回的字符串是原始输入字符串。除非我错过了什么,否则它没有副作用。

但是,我以前见过这样的代码

return unescape( encodeURIComponent( s ) );

return decodeURIComponent( escape( s ) );

使用encodeuriccomponent/decodeuriccomponent与UTF8绑定的事实,而escape/unescape不是。

这是一个hack来取消所有,但UTF-8编码/解码部分,这发生在大量优化的浏览器本地代码,而不是手写的javascript代码。

参见http://monsur.hossa.in/2012/07/20/utf-8-in-javascript.html获得详细解释。