-1

Node decodeURIComponent 是幂等的吗?

做...

decodeURIComponent(x) === decodeURIComponent(decodeURIComponent(x))

对于任何和所有x

如果不是,是否存在幂等的替代方案?我自己正在努力思考这是否可能。

4

2 回答 2

1

> encodeURIComponent('%')
'%25'
> encodeURIComponent(encodeURIComponent('%'))
'%2525'

> decodeURIComponent('%2525')
'%25'
> decodeURIComponent(decodeURIComponent('%2525'))
'%'

> decodeURIComponent('%2525') === decodeURIComponent(decodeURIComponent('%2525'))
false
于 2021-10-07T15:19:05.283 回答
1

不,如果字符串解码为一个新序列,该序列本身可以解释为编码的 URI 组件,那么它可以再次解码为不同的字符串:

const x = '%2521';
console.log(decodeURIComponent(x), decodeURIComponent(decodeURIComponent(x)));

%2521%21!

任何给定的字符串要么以特定格式编码,要么是纯文本。你无法猜测它应该是什么。%21可以是纯文本字符串“%21”,也可以是表示“!”的 URL 编码字符串。您需要知道它应该是什么并相应地解释它。这通常适用于任何和所有文本编码格式。

于 2021-10-07T15:19:32.203 回答